ZVVQ代理分享网

golang框架如何与NoSQL数据库交互?(golang 长连接

作者:zvvq博客网
导读go 框架通过 标准库 和第三方框架,为与 nosql 数据库交互提供了强大的功能。这些框架包括:1. mongodb 库:mgo;2. redis 库:redigo;3. cassandra 库:gocql。这些框架提供了与 mongodb、redis 和

go 架构根据标准库和第三方架构,为与 nosql 数据库交互提供了强大的作用。这种架构包含:1.mongodb库:mgo;2.redis库:redigo;3. cassandra 库:gocql。这种架构带来了与 mongodb、redis 和 cassandra 数据库交互的 api,包含建立连接、执行查询、插进、更新和删除文档等行为。

Go 架构与 NoSQL 数据库交互

NoSQL 数据库以其扩展性、稳定性和大容量存储水平而在当代应用程序中越来越流行。Go 语言利用其标准库和丰富第三方架构带来了与 NoSQL 数据库交互的强大功能。

以下是怎么使用Go 架构与 NoSQL 数据库交互:

1.MongoDB

库:[mgo](https://godoc.org/gopkg.in/mgo.v2)1

packagemain

import(

"context"

"fmt"

"log"

"time"

"gopkg.in/mgo.v2"

)

funcmain(){

//建立连接

session,err:=mgo.Dial("mongodb://localhost:27017")

iferr!=nil{

log.Fatal(err)

}

defersession.Close()

//获得选定数据库和结合

db:=session.DB("test")

collection:=db.C("users")

//插入文档

iferr:=collection.Insert(map[string]interface{}{"name":"Alice","age":30});err!=nil{

log.Fatal(err)

}

//查找文档

result:=&struct{Namestring}{Name:""}

iferr:=collection.Find(nil).One(result);err!=nil{

log.Fatal(err)

}

fmt.Println("Name:",result.Name)

//升级文档

if_,err:=collection.Update(map[string]interface{}{"name":"Alice"},map[string]interface{}{"age":31});err!=nil{

log.Fatal(err)

}

//删除文档

iferr:=collection.Remove(map[string]interface{}{"name":"Alice"});err!=nil{

log.Fatal(err)

}

}

2. Redis

库:[redigo](https://godoc.org/github.com/garyburd/redigo/redis)1

packagemain

import(

"fmt"

"log"

"github.com/garyburd/redigo/redis"

)

funcmain(){

//建立连接

conn,err:=redis.Dial("tcp","localhost:6379")

iferr!=nil{

log.Fatal(err)

}

deferconn.Close()

//设定键值对

if_,err:=conn.Do("SET","name","Alice");err!=nil{

log.Fatal(err)

}

//获得值

name,err:=redis.String(conn.Do("GET","name"))

iferr!=nil{

log.Fatal(err)

}

fmt.Println("Name:",name)

//删除键

if_,err:=conn.Do("DEL","name");err!=nil{

log.Fatal(err)

}

}

3. Cassandra

库:[gocql](https://godoc.org/github.com/gocql/gocql)1

packagemain

import(

"fmt"

"log"

"time"

"github.com/gocql/gocql"

)

funcmain(){

//建立连接

cluster:=gocql.NewCluster("localhost:9042")

session,err:=cluster.CreateSession()

iferr!=nil{

log.Fatal(err)

}

defersession.Close()

//创建表

iferr:=session.Query(`CREATETABLEusers(nametext,ageint,PRIMARYKEY(name))`).Exec();err!=nil{

log.Fatal(err)

}

//插入数据

iferr:=session.Query(`INSERTINTOusers(name,age)VALUES(?,?)`).Bind("Alice",30).Exec();err!=nil{

log.Fatal(err)

}

//查询数据

iter:=session.Query(`SELECTFROMusers`).Iter()

varnamestring

varageint

foriter.Scan(&name,&age){

fmt.Println("Name:",name,"Age:",age)

}

iferr:=iter.Close();err!=nil{

log.Fatal(err)

}

//更新数据

iferr:=session.Query(`UPDATEusersSETage=?WHEREname=?`).Bind(31,"Alice").Exec();err!=nil{

log.Fatal(err)

}

//删除数据

iferr:=session.Query(`DELETEFROMusersWHEREname=?`).Bind("Alice").Exec();err!=nil{

log.Fatal(err)

}

}

以上就是golang架构如何跟NoSQL数据库交互?的详细内容,大量请关注zvvq技术分享网其他类似文章!