安装go-redis v8版本
go get github.com/go-redis/redis/v8
初始化链接
cnt = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 2, // use default DB
})
设置过期时间
设置了时间,并且还没有过期的使用TTL命令可以看见还有多长时间过期。过期的会显示-2ns,没有设置过期时间的会显示-1ns
通用
判断key是存在
fmt.Println(cnt.Exists(ctx, "mykey3").Result())//返回key的数量。不存在就是0
模糊遍历Scan
iter := cnt.Scan(ctx, 0, "prefix:*", 0).Iterator() for iter.Next(ctx) { fmt.Println("keys", iter.Val()) } if err := iter.Err(); err != nil { panic(err) }
模糊查询key
fmt.Println(cnt.Keys(ctx,"t*").Result())
Hash
批量写(多个field写入同一个key下)
count,err:=cnt.HMSet(ctx,"mykey1",map[string]string{"name3":"达芬奇","name4":"kobe"}).Result() count,err=cnt.HMSet(ctx,"mykey1",[]string{"name5","达芬奇2","name6","kobe2"}).Result() count,err=cnt.HMSet(ctx,"mykey1","name7","达芬奇3","name8","kobe4").Result()
批量读(读取同一个key的下的多个field)
r,err:=cnt.HMGet(ctx,"mykey1","name","name2","name3").Result() //读取同一个key的下的多个field if err !=nil { fmt.Println(err) } fmt.Println(r) //r是一个[]interface类型的
删除
cnt.HDel(ctx,"mykey1","name").Result()//会返回删除的字段的数量
判断是否存在key或者对应key的field
fmt.Println(cnt.HExists(ctx,"mykey1","name2").Result())
获取一个key下的所有field
fmt.Println(cnt.HGetAll(ctx,"mykey1").Result()) //返回map[string]string
给某个field增加值
//要被增加的field的value必须是对应的数值类型才可以 fmt.Println(cnt.HIncrBy(ctx,"mykey1","name1",2).Result()) //第四个参数是指要加多少,返回被修改后的field的value的值 fmt.Println(cnt.HIncrByFloat(ctx,"mykey1","name9",1.0000).Result())
获取指定key的所有field
fmt.Println(cnt.HKeys(ctx,"mykey1").Result())//返回string数组
模糊查询指定key的field
//HScan(ctx,"mykey1",游标-从哪开始,要匹配的字符,返回几个数据) fmt.Println(cnt.HScan(ctx,"mykey1",0,"s*",10).Result())//返回规定数量的匹配的field的数组和游标值
没有就创建,有了就不动
fmt.Println(cnt.HSetNX(ctx,"mykey2","age2","2").Result())//返回是否有新的创建成功
获取指定key的所有field的value
fmt.Println(cnt.HVals(ctx, "mykey1").Result())//返回value的数组
评论 (0)