我正在努力学习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()
答案 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。