




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第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秒。
//基礎(chǔ)使用
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)
//設(shè)置key過期時間成功true
rdb.Expire(ctx,"testKey",time.Second*60)
//存在返回1
rdb.Exists(ctx,"testKey")
//key不存在時設(shè)置值
rdb.SetNX(ctx,"unkey","val",0)
rdb.Set(ctx,"testKey2","xxx",0)
//刪除key可刪除多個
rdb.Del(ctx,"testKey2","testKey")
//字符串
funcTest_String(t*testing.T){
//設(shè)置值
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é)構(gòu)體存入注意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é)構(gòu)體序列化反序列化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é)構(gòu)體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管道允許客戶端命令服務(wù)器通過執(zhí)行任務(wù)而通過執(zhí)行任務(wù)來提高您的性能。
//在管道中,像命令命令一樣將編寫+使用命令來執(zhí)行任務(wù),并將其用于執(zhí)行任務(wù),執(zhí)行任務(wù)不是一個地執(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實習生實習協(xié)議及職業(yè)規(guī)劃輔導(dǎo)與勞動權(quán)益保障服務(wù)合同
- 演出票務(wù)推廣補充協(xié)議
- 核電站核安全操作員崗位全職聘用及職業(yè)資格認證合同
- 母嬰用品店智能化設(shè)備與特色商品供應(yīng)協(xié)議
- 動作捕捉數(shù)據(jù)采集與三維模型重建租賃合同
- 小紅書店鋪運營策略與品牌建設(shè)合作合同
- 商業(yè)街區(qū)戶外廣告位租賃合作協(xié)議
- 《侵襲性肺炎的臨床診斷與治療》課件
- 《手腕骨折的認識與處理》課件
- 食品安全課件比賽參賽指南
- 玉石代理銷售合同協(xié)議
- (二模)2025年汕頭市高三普通高考第二次模擬考試英語試卷(含答案)
- 山東2025年山東省公共衛(wèi)生臨床中心招聘博士人才60筆試歷年參考題庫附帶答案詳解
- 2024年臺州市委統(tǒng)戰(zhàn)部下屬事業(yè)單位選聘筆試真題
- 山西太原事業(yè)單位考試《行測》模擬題帶答案2024年
- 2025年中考英語第一次模擬考試(蘇州卷)(原卷版)
- 福州一號線盾構(gòu)法地鐵工程整體施工組織設(shè)計
- 公務(wù)員考試-經(jīng)濟基礎(chǔ)知識模擬題-計量經(jīng)濟學-協(xié)整與誤差修正模型
- 資源與運營管理-第一次形考任務(wù)-國開-參考資料
- 五年級下冊數(shù)學教案 - 8.1《復(fù)式條形統(tǒng)計圖》 北師大版
- 2025年二建《建筑工程管理與實務(wù)》考前必刷必練題庫500題(含真題、重點題)
評論
0/150
提交評論