首页 文章 go-redis使用之String字符串
func GetRedisClient()*redis.Client{
return redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
})
}
func redisTest(cli *redis.Client){
defer cli.Close()
pong:=cli.Ping().Val()
fmt.Printf("数据连接状态:%v\n",pong) // 数据连接状态:PONG
// 操作字符串
fmt.Println("-------------set/get---------------")
cli.Set("name","jack",0) // 0没有过期时间
name,err:=cli.Get("name").Result()
if err!=nil {
panic(err) // Get一个不存在的key,会 panic: redis: nil
}
fmt.Printf("name:%v\n",name) // name:jack
fmt.Println("---------mset/mget:同时插入获取多个值---------")
err=cli.MSet("k1","v1","k2","v2","k3","v3").Err()
if err != nil {
panic(err)
}
err=cli.MSet("k1","v1","k2","v2").Err()
vals1:=make([]interface{},3)
vals1,err=cli.MGet("k1","k2","k3").Result()
if err != nil {
panic(err)
}
for _, item := range vals1 {
fmt.Println(item) // v1 v2 v3(Get多个Key时,不存在的key返回nil)
}
// 判断key是否存在,可同时判断多个,不存在为:0,每存在一个+1
fmt.Println(cli.Exists("name","k1","k2").Val()) // 都存在:3
fmt.Println(cli.Exists("name9999","k1","k2").Val()) // 只有k1k2存在:2
// 获取字符串长度
fmt.Println(cli.StrLen("name").Val()) //4
fmt.Println("---------append:追加字符串,不存在就创建---------")
cli.Append("name","-append") // jack-append
fmt.Println(cli.Get("name").Val())
err=cli.Append("newName","Tom").Err() // 追加不存在的key的值,新建!
if err != nil {
panic(err)
}
fmt.Println(cli.Get("newName").Val()) // Tom
// name:jack-append
// GetRange 索引是前闭后闭,也就是前后都包含,并且不会修改原数据
fmt.Println("---------GetRange:截取Value,end=-1截取到末尾---------")
fmt.Println("截取后的name:",cli.GetRange("name",0,3).Val()) //截取后的name: jack
// SetRange 从offset开始替换,会修改原数据
fmt.Println("---------SetRange:替换Value---------")
cli.SetRange("name",5,"zzzz").Val()
fmt.Println("替换后的name:",cli.Get("name").Val()) // 替换后的name: jack-zzzznd
fmt.Println("---------setnx:如果key不存在,存储key:value,若key存在,存储失败---------")
err=cli.SetNX("name1","setnx_name",time.Second*10).Err()
if err != nil {
panic(err)
}
fmt.Println(cli.Get("name1").Val())
fmt.Println("----------递增,步长为1:如果key不存在,那么key的值会先被初始化为0,在执行INCR操作------------")
cli.Incr("incr")
fmt.Println(cli.Get("incr").Val())
fmt.Println("----------递减,步长为1:如果key不存在,那么key的值会先被初始化为0,在执行INCR操作------------")
cli.Decr("Decr")
fmt.Println(cli.Get("Decr").Val())
fmt.Println("----------递增,设置步长:如果key不存在,那么key的值会先被初始化为0,在执行INCR操作------------")
cli.IncrBy("IncrBy",2)
fmt.Println(cli.Get("IncrBy").Val())
fmt.Println("----------递减,设置步长:如果key不存在,那么key的值会先被初始化为0,在执行INCR操作------------")
cli.DecrBy("DecrBy",5)
fmt.Println(cli.Get("DecrBy").Val())
}
func main(){
rdb:=GetRedisClient()
redisTest(rdb)
}