




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Go语言操作redis数据库的方法先上命令速查网站,菜鸟yyds
/redis/redis-strings.html
操作redis的包是go-redis/redis
官方文档https://redis.uptrace.dev/guide/
github/go-redis/redis
创建项目
创建test文件夹
创建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,//在启动阶段创建指定数量的Idle连接,并长期维持idle状态的连接数不少于指定数量;。
//超时
//DialTimeout:5*time.Second,//连接建立超时时间,默认5秒。
//ReadTimeout:3*time.Second,//读超时,默认3秒,-1表示取消读超时
//WriteTimeout:3*time.Second,//写超时,默认等于读超时
//PoolTimeout:4*time.Second,//当所有连接都处在繁忙状态时,客户端等待可用连接的最大等待时长,默认为读超时+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:匹配[]内的单个字符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)
//以结构体存入注意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,
//结构体序列化反序列化map你也可以用其他包进行转化为map,但是注意转化后的键名大小写问题
m:=make(map[string]interface{})
buf,_:=json.Marshal(user1)
_=json.Unmarshal(buf,m)
//存入
rdb.HSet(ctx,"user4",m)
//取出绑定到结构体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
//根据索引获取绑定到数组
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管道允许客户端命令服务器通过执行任务而通过执行任务来提高您的性能。
//在管道中,像命令命令一样将编写+使用命令来执行任务,并将其用于执行任务,执行任务不是一个地执行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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市场开发合作协议及附件
- 专业技能培训合格证明书(8篇)
- 农业养殖技术改良与应用协议
- 行政管理市场营销试题及答案总结
- 企业战略与资源配置的动态关系试题及答案
- 2025年农村住宅建设规范:自建住宅买卖合同
- 行政管理本科课程试题及答案总结
- 行政管理学考试常见题型试题及答案
- 2025年行政管理考核模式试题及答案
- 建筑工程考试前沿试题及答案分析
- 食堂食材配送采购投标方案(技术标)
- 2025年全球及中国智能无人叉车行业头部企业市场占有率及排名调研报告
- 2025苏州中考数学二轮专题复习-圆的综合应用-专项训练【含答案】
- 月嫂合同中的保密协议
- 术中低体温预防
- 人力资源管理数字化转型解决方案
- 糖尿病足疼痛
- 《电力系统仿真概述》课件
- 2024年版水利水电工程单元工程单元工程质量验收评定表
- 《酵母表达系统》课件
- 2020版新疆维吾尔自治区市政工程消耗量定额(四)
评论
0/150
提交评论