go-redis使用之String字符串

go-redis String字符串

-> go-redis List列表使用详解
-> go-redis Hash使用详解
-> go-redis Set集合使用详解
-> go-redis ZSet有序集合使用详解

基本类型:字符串操作(单个字符串最大512M)

📒📒📒


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)
}

源码地址:https://github.com/go-redis/redis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值