如何在GO语言中创建持久的cassandra连接?

时间:2016-08-16 17:54:37

标签: go cassandra

我正在努力学习GO语言。在我的小项目中,制作Cassandra DB连接但是花费更多时间来创建会话。

我想创建持久连接,以便从下次命中时,连接时间将等于可以忽略不计。

是否有任何创建持久连接的方法?

Cassandra连接代码如下:

cluster := gocql.NewCluster("cluseter_ip")
pass := gocql.PasswordAuthenticator{"username", "password"}
cluster.Keyspace = "keyspace_name"
cluster.Authenticator = pass
cluster.Consistency = gocql.One
cluster.Port = 9042   // default port 
cluster.NumConns = 1
session, _ := cluster.CreateSession()

1 个答案:

答案 0 :(得分:2)

var session *gocql.Session

func getCluster() *gocql.ClusterConfig {
     cluster := gocql.NewCluster("cluseter_ip")
     pass := gocql.PasswordAuthenticator{"username", "password"}
     cluster.Keyspace = "keyspace_name"
     cluster.Authenticator = pass
     cluster.Consistency = gocql.One
     cluster.Port = 9042   // default port 
     cluster.NumConns = 1
     return cluster
}

func initSession() error {
    var err error
    if session == nil || session.Closed() {
        session, err := getCluster().CreateSession()
    }
    return err
}

现在在使用会话之前,请先调用initSession()并在使用之前检查错误。这样的事情应该有效。如果您的应用程序是多线程的,请确保同步initSession api。