




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第Go語言操作redis數(shù)據(jù)庫的方法先上命令速查網(wǎng)站,菜鳥yyds
/redis/redis-strings.html
操作redis的包是go-redis/redis
官方文檔https://redis.uptrace.dev/guide/
github/go-redis/redis
創(chuàng)建項目
創(chuàng)建test文件夾
創(chuàng)建Redis_test.go文件
直接上代碼,代碼解釋全寫在注釋里
packagetest
import(
"context"
"encoding/json"
"fmt"
"/go-redis/redis/v8"
"testing"
"time"
varctx=context.Background()
varrdb*redis.Client
funcinit(){
rdb=redis.NewClient(redis.Options{
//端口需要改,這里是docker的端口
Addr:"localhost:49153",
Password:"redispw",//nopasswordset
DB:0,//usedefaultDB
PoolSize:15,
MinIdleConns:10,//在啟動階段創(chuàng)建指定數(shù)量的Idle連接,并長期維持idle狀態(tài)的連接數(shù)不少于指定數(shù)量;。
//超時
//DialTimeout:5*time.Second,//連接建立超時時間,默認5秒。
//ReadTimeout:3*time.Second,//讀超時,默認3秒,-1表示取消讀超時
//WriteTimeout:3*time.Second,//寫超時,默認等于讀超時
//PoolTimeout:4*time.Second,//當所有連接都處在繁忙狀態(tài)時,客戶端等待可用連接的最大等待時長,默認為讀超時+1秒。
//基礎使用
funcTest_Base(t*testing.T){
//添加key
//0表示沒有過期時間
rdb.Set(ctx,"testKey","xxx",0)
//獲取值
val,err:=rdb.Get(ctx,"testKey").Result()
iferr!=nil{
fmt.Println("錯誤",err)
fmt.Println("值:",val)
//設置key過期時間成功true
rdb.Expire(ctx,"testKey",time.Second*60)
//存在返回1
rdb.Exists(ctx,"testKey")
//key不存在時設置值
rdb.SetNX(ctx,"unkey","val",0)
rdb.Set(ctx,"testKey2","xxx",0)
//刪除key可刪除多個
rdb.Del(ctx,"testKey2","testKey")
//字符串
funcTest_String(t*testing.T){
//設置值
rdb.Set(ctx,"strKey",100,0)
rdb.Set(ctx,"straey",100,0)
//key自增1
rdb.Incr(ctx,"strKey")
//增加66
rdb.IncrBy(ctx,"straey",66)
//-1
rdb.Decr(ctx,"straey")
//-5
rdb.DecrBy(ctx,"straey",5)
//過期時間
rdb.TTL(ctx,"strKey")
//str*ey:*為任意字符串
//str[kKac]ey:匹配[]內(nèi)的單個字符strkey,strKey,straey,strcey
//strey:任意單個字符
//掃描key
iter:=rdb.Scan(ctx,0,"strey",0).Iterator()
foriter.Next(ctx){
fmt.Println("keys",iter.Val(),":val",rdb.Get(ctx,iter.Val()).Val())
iferr:=iter.Err();err!=nil{
panic(err)
//哈希
funcTest_Hash(t*testing.T){
rdb.HMSet(ctx,"hkey1","name","shushan","age",99,"b",true)
//以結(jié)構體存入注意redistag
typeUserstruct{
Namestring`json:"name,omitempty"redis:"name"`
Ageint`json:"age,omitempty"redis:"age"`
Bbool`json:"b,omitempty"redis:"b"`
//...
user1:=User{
Name:"shushan2",
Age:55,
B:true,
//結(jié)構體序列化反序列化map你也可以用其他包進行轉(zhuǎn)化為map,但是注意轉(zhuǎn)化后的鍵名大小寫問題
m:=make(map[string]interface{})
buf,_:=json.Marshal(user1)
_=json.Unmarshal(buf,m)
//存入
rdb.HSet(ctx,"user4",m)
//取出綁定到結(jié)構體map也行
varuserUser
rdb.HGetAll(ctx,"user4").Scan(user)
fmt.Printf("%#v\n",user)
//test.User{Name:"shushan2",Age:55,B:true}
//獲取key下的所有值*匹配方式與string的所有原理一樣
iter:=rdb.HScan(ctx,"user4",0,"*",0).Iterator()
foriter.Next(ctx){
fmt.Println("keys",iter.Val())
iferr:=iter.Err();err!=nil{
panic(err)
//列表
funcTest_List(t*testing.T){
//添加
rdb.LPush(ctx,"listKey1",111,222,333,444)
rdb.RPush(ctx,"listKey1",5555)
//不存在不添加
rdb.LPushX(ctx,"unlistKey",111)
varintf[]int
//根據(jù)索引獲取綁定到數(shù)組
rdb.LRange(ctx,"listKey1",0,10).ScanSlice(intf)
fmt.Println(intf)
variint
//彈出
rdb.LPop(ctx,"listKey1").Scan(i)
fmt.Println(i)
//....
//集合
funcTest_Set(t*testing.T){
//添加
rdb.SAdd(ctx,"setKey1","m1","onlyk1")
rdb.SAdd(ctx,"setKey2","m2","xca")
sl,_:=rdb.SDiff(ctx,"setKey1","setKey2").Result()
fmt.Println(sl)
//onlyk1,m1
//隨機移除
varvalstring
rdb.SPop(ctx,"setKey1").Scan(val)
fmt.Println(val)
//.....
//管道
funcTest_Pipe(t*testing.T){
//官方描述
//Redis管道允許客戶端命令服務器通過執(zhí)行任務而通過執(zhí)行任務來提高您的性能。
//在管道中,像命令命令一樣將編寫+使用命令來執(zhí)行任務,并將其用于執(zhí)行任務,執(zhí)行任務不是一個地執(zhí)行100個命令。
//理解為命令就像石頭,一次運送一個石頭
//使用管道等于用車裝石頭Exec時就運送過去
pipe:=rdb.Pipeline()
incr:=pipe.Set(ctx,"pip_test","bt",0)
pipe.Expire(ctx,"pip_test",time.Hour)
//提交
cmds,err:=pipe.Exec(ctx)
i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 運營咨詢顧問合同協(xié)議
- 月結(jié)貨款協(xié)議書
- 汽車分伙協(xié)議書
- 《晚期肺癌持續(xù)治療策略》課件
- 遺產(chǎn)協(xié)議書范本
- 軟件制圖交易合同協(xié)議
- 手車位買賣協(xié)議書
- 舊船買賣協(xié)議書
- 追償糾紛和解協(xié)議書模板
- 教育咨詢員服務合同書
- 數(shù)字貿(mào)易學 課件 第7章 智能制造
- 熱射病的防治與急救課件
- CATIAV5應用教程-從機械設計到產(chǎn)品設計
- JJF 2109-2024標準物質(zhì)定值技術要求有機同位素稀釋質(zhì)譜法
- 小升初語文真題專項訓練專題6+文學常識與名著閱讀(有解析)
- 新GCP醫(yī)療器械臨床試驗知識試題(附含答案)
- 滴滴出行營銷策略分析報告總結(jié)
- 國際貿(mào)易風險管理與進出口業(yè)務培訓資料
- 數(shù)獨4宮練習題(全)
- 《支持向量機SVM》課件
- 生態(tài)環(huán)境分區(qū)管控總結(jié)與展望報告
評論
0/150
提交評論