绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
go 简单使用scylladb
2022-05-25 15:22:26

golang gocql 使用
因为scylladb 直接是兼容Cassandra,故我们可以直接使用Cassandra的golang客户端github.com/gocql/gocql

docker命令:
1.下载docker镜像
docker pull scylladb/scylla
2.本地运行
docker run -p 9042:9042 -it --name some-scylla -d scylladb/scylla

创建数据库:
1.进入数据库:
docker exec -it some-scylla cqlsh
2.新建一个数据库
CREATE KEYSPACE IF NOT EXISTS dong_tech WITH REPLICATION = {'class': 'SimpleStrategy','replication_factor':1};
describe keyspaces;
use dong_tech;

运行本地:
main方法
可以反复执行
package main

import (
"fmt"

"github.com/gocql/gocql"
"github.com/labstack/gommon/log"
)

func main() {
session, err := getDBSession()
chkErr(err)

// todo 次执行
err = createTable(session)
chkErr(err)

err = insert(session)
chkErr(err)

err = find(session)
chkErr(err)

err = dropTable(session)
chkErr(err)
}

func chkErr(err error) {
if err == nil {
return
}
log.Panic("db init error", err)
return
}

// 拿到db
func getDBSession() (*gocql.Session, error) {
cluster := gocql.NewCluster("127.0.0.1:9042")
cluster.Keyspace = "dong_tech"
cluster.Consistency = gocql.Consistency(1)
cluster.NumConns = 3
var err error
dbSession, err := cluster.CreateSession()
if err != nil {
return nil, err
}
return dbSession, nil
}

// 创建表
func createTable(session *gocql.Session) error {
query := fmt.Sprintf(`CREATE TABLE user(id int PRIMARY KEY, user_name varchar);`)
return session.Query(query).Exec()
}

// 删除表
func dropTable(session *gocql.Session) error {
query := fmt.Sprintf(`drop table user;`)
return session.Query(query).Exec()
}

// 插入数据
func insert(session *gocql.Session) error {
query := fmt.Sprintf(`INSERT INTO user (id,user_name) VALUES (1,'zhangsan')`)
return session.Query(query).Exec()
}

// 查询数据
func find(session *gocql.Session) error {
query := fmt.Sprintf("SELECT * from user;")
iter := session.Query(query).Iter()
defer func() {
if iter != nil {
iter.Close()
}
}()
var id int
var name string
for iter.Scan(&id, &name) {
fmt.Println(id, name)
}
return nil
}

// 批量执行数据
func batchInsert(session *gocql.Session) error {
query := fmt.Sprintf(`BEGIN BATCH
UPDATE user SET user_name = 'asdqw' where id = %d;
INSERT INTO user (id,user_name) VALUES (2,'zhangsan');
APPLY BATCH;`, 1)
return session.Query(query).Exec()
}
https://github.com/zld126126/go_scylladb


参考资料:
https://blog.csdn.net/niyuelin1990/article/details/79624530
————————————————
版权声明:本文为CSDN博主「学生董格」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aaaadong/article/details/107207281

分享好友

分享这个小栈给你的朋友们,一起进步吧。

ScyllaDB
创建时间:2022-04-19 10:18:17
ScyllaDB 是用 C++ 重写的 Cassandra,每节点每秒处理 100 万 TPS。ScyllaDB 完全兼容 Apache Cassandra,拥有比 Cassandra 多 10x 倍的吞吐量,降低了延迟。 ScyllaDB 是性能优异的 NoSQL 列存储数据库。 ScyllaDB 在垃圾收集或者 Compaction 的时候不需要暂停;在常规生产负载的时候可以添加和删除节点。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~