首页 文章 go-redis使用之String字符串
go-redis使用之String字符串
编辑时间:2023-10-28 19:58:24 作者:dashizi 浏览量:111


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)

}


来说两句吧
最新评论