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,包含建立连接、执行查询、插进、更新和删除文档等行为。

内容来自samhan666

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

) 内容来自zvvq

funcmain(){

copyright zvvq

//建立连接 zvvq.cn

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

本文来自zvvq

iferr!=nil{ 本文来自zvvq

log.Fatal(err) 内容来自zvvq

} zvvq

defersession.Close()

内容来自samhan

//获得选定数据库和结合 内容来自samhan

db:=session.DB("test") 内容来自zvvq

collection:=db.C("users")

zvvq

//插入文档

copyright zvvq

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

copyright zvvq

log.Fatal(err) 本文来自zvvq

}

内容来自samhan

//查找文档 zvvq

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

本文来自zvvq

iferr:=collection.Find(nil).One(result);err!=nil{ 内容来自zvvq

log.Fatal(err) 内容来自zvvq,别采集哟

} 内容来自samhan

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

zvvq

//升级文档

内容来自samhan666

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

copyright zvvq

log.Fatal(err)

zvvq.cn

} zvvq

//删除文档

内容来自zvvq,别采集哟

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

内容来自samhan666

log.Fatal(err)

内容来自zvvq

} 内容来自zvvq,别采集哟

} zvvq

2. Redis

zvvq好,好zvvq

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

内容来自samhan666

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

copyright zvvq

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

内容来自zvvq,别采集哟

iferr!=nil{ 内容来自samhan

log.Fatal(err) zvvq好,好zvvq

}

内容来自zvvq

fmt.Println("Name:",name) 内容来自samhan666

//删除键

zvvq好,好zvvq

if_,err:=conn.Do("DEL","name");err!=nil{ 内容来自samhan

log.Fatal(err) 内容来自samhan

}

copyright zvvq

} 内容来自zvvq

3. Cassandra 内容来自zvvq,别采集哟

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

内容来自samhan

packagemain

内容来自samhan666

import(

zvvq好,好zvvq

"fmt"

zvvq

"log" 内容来自samhan

"time"

本文来自zvvq

"github.com/gocql/gocql"

内容来自samhan666

)

copyright zvvq

funcmain(){

内容来自zvvq,别采集哟

//建立连接

zvvq.cn

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

本文来自zvvq

session,err:=cluster.CreateSession() 内容来自samhan

iferr!=nil{ 内容来自zvvq

log.Fatal(err)

内容来自zvvq,别采集哟

} zvvq.cn

defersession.Close()

copyright zvvq

//创建表

内容来自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)

zvvq

} 内容来自samhan

//查询数据

内容来自zvvq

iter:=session.Query(`SELECT*FROMusers`).Iter() 内容来自samhan

varnamestring

zvvq

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)

内容来自samhan666

}

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

} 内容来自zvvq

} 内容来自samhan666

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

zvvq好,好zvvq