go - 如何用GO语言创建持久的cassandra连接?

标签 go cassandra

我正在尝试学习GO语言。在我的小项目中,建立 Cassandra DB 连接,但创建 session 需要更多时间。

我想创建持久连接,以便从下一次点击开始,连接时间将等于可以忽略不计。

有什么方法可以创建持久连接吗?

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()

最佳答案

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
}

现在,在使用 session 之前,请调用 initSession() 并在使用之前检查是否有错误。像这样的东西应该有效。如果您的应用程序是多线程的,请确保同步 initSession api。

关于go - 如何用GO语言创建持久的cassandra连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38981452/

相关文章:

应用程序日志的 Cassandra 数据模型(数十亿次操作!)

Cassandra 读取负帧大小

rest - 当某些字段为只读而其他字段可为空时,如何使用 Golang 结构在 API 中执行 CRUD?

unit-testing - 是否可以模拟从 golang 中的包导入的函数?

http - 将对 GO web 服务的访问限制为来自本地子网的客户端

mysql - 用于将数据从 Cassandra 迁移到 MySQL 的工具?

erlang - 创建键空间

image - 确定图像是否具有 alpha channel 的最佳方法是什么?

forms - 没有获取使用 go 发送的表单数据

cassandra - 如何在 cassandra 中具有相同结构的列族之间复制/移动数据