go 架构根据标准库和第三方架构,为与 nosql 数据库交互提供了强大的作用。这种架构包含:1.mongodb库:mgo;2.redis库:redigo;3. cassandra 库:gocql。这种架构带来了与 mongodb、redis 和 cassandra 数据库交互的 api,包含建立连接、执行查询、插进、更新和删除文档等行为。
zvvq.cn
Go 架构与 NoSQL 数据库交互 内容来自zvvq
NoSQL 数据库以其扩展性、稳定性和大容量存储水平而在当代应用程序中越来越流行。Go 语言利用其标准库和丰富第三方架构带来了与 NoSQL 数据库交互的强大功能。
zvvq
以下是怎么使用Go 架构与 NoSQL 数据库交互: 内容来自zvvq
1.MongoDB 内容来自zvvq,别采集哟
库:[mgo](https://godoc.org/gopkg.in/mgo.v2)1 zvvq好,好zvvq
packagemain
zvvq.cn
import( copyright zvvq
"context" copyright zvvq
"fmt" zvvq好,好zvvq
"log"
copyright zvvq
"time" 内容来自samhan666
"gopkg.in/mgo.v2"
) 内容来自zvvq
funcmain(){
//建立连接 zvvq.cn
session,err:=mgo.Dial("mongodb://localhost:27017")
iferr!=nil{ 本文来自zvvq
log.Fatal(err) 内容来自zvvq
} zvvq
defersession.Close()
//获得选定数据库和结合 内容来自samhan
db:=session.DB("test") 内容来自zvvq
collection:=db.C("users")
//插入文档
iferr:=collection.Insert(map[string]interface{}{"name":"Alice","age":30});err!=nil{
copyright zvvq
log.Fatal(err) 本文来自zvvq
}
//查找文档 zvvq
result:=&struct{Namestring}{Name:""}
iferr:=collection.Find(nil).One(result);err!=nil{ 内容来自zvvq
log.Fatal(err) 内容来自zvvq,别采集哟
} 内容来自samhan
fmt.Println("Name:",result.Name)
zvvq
//升级文档
if_,err:=collection.Update(map[string]interface{}{"name":"Alice"},map[string]interface{}{"age":31});err!=nil{
copyright zvvq
log.Fatal(err)
zvvq.cn
} zvvq
//删除文档
iferr:=collection.Remove(map[string]interface{}{"name":"Alice"});err!=nil{
log.Fatal(err)
} 内容来自zvvq,别采集哟
} zvvq
2. Redis
库:[redigo](https://godoc.org/github.com/garyburd/redigo/redis)1
packagemain
zvvq
import( 内容来自zvvq,别采集哟
"fmt"
内容来自zvvq
"log"
copyright zvvq
"github.com/garyburd/redigo/redis" 内容来自samhan666
)
本文来自zvvq
funcmain(){ zvvq.cn
//建立连接
内容来自samhan666
conn,err:=redis.Dial("tcp","localhost:6379")
iferr!=nil{ zvvq
log.Fatal(err) copyright zvvq
} zvvq
deferconn.Close()
内容来自zvvq
//设定键值对 zvvq
if_,err:=conn.Do("SET","name","Alice");err!=nil{ 内容来自samhan666
log.Fatal(err)
内容来自zvvq
} 内容来自samhan
//获得值 内容来自samhan666
name,err:=redis.String(conn.Do("GET","name"))
iferr!=nil{ 内容来自samhan
log.Fatal(err) zvvq好,好zvvq
}
fmt.Println("Name:",name) 内容来自samhan666
//删除键
if_,err:=conn.Do("DEL","name");err!=nil{ 内容来自samhan
log.Fatal(err) 内容来自samhan
}
} 内容来自zvvq
3. Cassandra 内容来自zvvq,别采集哟
库:[gocql](https://godoc.org/github.com/gocql/gocql)1
packagemain
import(
"fmt"
zvvq
"log" 内容来自samhan
"time"
本文来自zvvq
"github.com/gocql/gocql"
)
copyright zvvq
funcmain(){
内容来自zvvq,别采集哟
//建立连接
cluster:=gocql.NewCluster("localhost:9042")
本文来自zvvq
session,err:=cluster.CreateSession() 内容来自samhan
iferr!=nil{ 内容来自zvvq
log.Fatal(err)
内容来自zvvq,别采集哟
} zvvq.cn
defersession.Close()
//创建表
内容来自samhan666
iferr:=session.Query(`CREATETABLEusers(nametext,ageint,PRIMARYKEY(name))`).Exec();err!=nil{ 本文来自zvvq
log.Fatal(err)
内容来自samhan
}
copyright zvvq
//插入数据 内容来自zvvq
iferr:=session.Query(`INSERTINTOusers(name,age)VALUES(?,?)`).Bind("Alice",30).Exec();err!=nil{ 内容来自zvvq,别采集哟
log.Fatal(err)
} 内容来自samhan
//查询数据
iter:=session.Query(`SELECT*FROMusers`).Iter() 内容来自samhan
varnamestring
varageint 内容来自zvvq,别采集哟
foriter.Scan(&name,&age){ zvvq.cn
fmt.Println("Name:",name,"Age:",age) 内容来自zvvq,别采集哟
}
内容来自zvvq
iferr:=iter.Close();err!=nil{ 内容来自samhan666
log.Fatal(err)
}
copyright zvvq
//更新数据 zvvq好,好zvvq
iferr:=session.Query(`UPDATEusersSETage=?WHEREname=?`).Bind(31,"Alice").Exec();err!=nil{ zvvq.cn
log.Fatal(err)
zvvq.cn
} 内容来自zvvq,别采集哟
//删除数据
本文来自zvvq
iferr:=session.Query(`DELETEFROMusersWHEREname=?`).Bind("Alice").Exec();err!=nil{
内容来自zvvq
log.Fatal(err)
} 内容来自zvvq
} 内容来自samhan666
以上就是golang架构如何跟NoSQL数据库交互?的详细内容,大量请关注zvvq技术分享网其他类似文章!