go : go-redis list操作

春江潮水连海平,海上明月共潮生!!!
具体代码在: https://gitee.com/hjx_RuGuoYunZhiDao/strom-huang-go/blob/master/go_redis/go_redis_list.go

1、初始化redis

参考上一篇:https://blog.csdn.net/bei_FengBoby/article/details/124756296

2、list操作

2.1、LPushX & LPush (插入数据)

	//config.RedisDb 是把链接的单独剔除去当做一个方法引用,这里说一下坑:
	// RedisDb 大写的字母表示公用方法,小写字母表示私有方法
	
    //LPush : 此时列表不存在,依然可以插入
	n, err := config.RedisDb.LPush("testList", "tonoy1").Result()
	fmt.Println("number:", n)

	err = config.RedisDb.LPush("testList", "tonoy1", "tonoy3", "tonoy2").Err()
	if err != nil {
		//redis连接错误
		panic(err)
	}

	//LPushX:仅当Key存在的时候才插入数据,此时列表不存在,无法插入
	t, err := config.RedisDb.LPushX("testList1", "aaa").Result()
	fmt.Println("number:", t)

2.2、LRange & LLen (读取list指定坐标的值)

// 返回从0开始到-1位置之间的数据,意思就是返回全部数据
	vals, err := config.RedisDb.LRange("testList", 0, -1).Result()
	if err != nil {
		panic(err)
	}
	fmt.Println(vals)

	// 返回从0开始到2 位置之间的数据,意思就是返回全部数据
	vals2, err := config.RedisDb.LRange("testList", 0, 2).Result()
	if err != nil {
		panic(err)
	}
	fmt.Println(vals2)

	//返回list集合中的长度
	testList, err := config.RedisDb.LLen("testList").Result()
	if err != nil {
		panic(err)
	}

2.3、LSet & LInsert (替换list中指定坐标的值)

	bee, err := config.RedisDb.LSet("testList", 2, "bee").Result()
	fmt.Print(bee)

	//在list列表testList 中值为bee 前面添加元素hello : 第二个参数有:after ,前面/后面
	config.RedisDb.LInsert("testList", "before", "bee", "hello")
	//config.RedisDb.LInsertBefore("studentList","lilei","hello") 执行效果一样

	config.RedisDb.LInsert("testList", "after", "bee", "a")
	//config.RedisDb.LInsertBefore("studentList","lilei","hello") 执行效果一样

2.4 LTrim & LIndex (截取 /返回 ist中指定坐标的值 )

    // 截取(可以理解为删除)名称为testList 的 key,并把截取后的值赋值给testList
	val := config.RedisDb.LTrim("testList", 0, 3)
	fmt.Println(val)

	//返回 testList list中第三个值
	index, err := config.RedisDb.LIndex("testList", 2).Result()
	fmt.Println(index)

2.5 LPop & LRem (删除 值 )

   //从列表左边删除第一个数据,并返回删除的数据 可以理解为删除最后一个数据
	config.RedisDb.LPop("testList")

	//删除列表中的数据。删除10个值为bee的数据重复元素
	config.RedisDb.LRem("testList", 10, "bee")

3、所有代码

package main

import (
	"fmt"
	config "strom-huang-go/go_redis/config"
)

func main() {
	err := config.InitRedisClient()
	if err != nil {
		//redis连接错误
		panic(err)
	}
	fmt.Println("Redis连接成功")

	// -------------------------list-操作 -----------------------------------
	//LPushX & LPush

	//LPush : 此时列表不存在,依然可以插入
	n, err := config.RedisDb.LPush("testList", "tonoy1").Result()
	fmt.Println("number:", n)

	err = config.RedisDb.LPush("testList", "tonoy1", "tonoy3", "tonoy2").Err()
	if err != nil {
		//redis连接错误
		panic(err)
	}

	//LPushX:仅当K存在的时候才插入数据,此时列表不存在,无法插入
	t, err := config.RedisDb.LPushX("testList1", "aaa").Result()
	fmt.Println("number:", t)

	// LRange & LLen
	// 返回从0开始到-1位置之间的数据,意思就是返回全部数据
	vals, err := config.RedisDb.LRange("testList", 0, -1).Result()
	if err != nil {
		panic(err)
	}
	fmt.Println(vals)

	// 返回从0开始到2 位置之间的数据,意思就是返回全部数据
	vals2, err := config.RedisDb.LRange("testList", 0, 2).Result()
	if err != nil {
		panic(err)
	}
	fmt.Println(vals2)

	//返回list集合中的长度
	testList, err := config.RedisDb.LLen("testList").Result()
	if err != nil {
		panic(err)
	}

	fmt.Println("testList集合的长度为:", testList)

	// LTrim & LIndex
	// 截取(可以理解为删除)名称为testList 的 key,并把截取后的值赋值给testList
	val := config.RedisDb.LTrim("testList", 0, 3)
	fmt.Println(val)

	//返回 testList list中第三个值
	index, err := config.RedisDb.LIndex("testList", 2).Result()
	fmt.Println(index)

	//LSet & LInsert
	//替换 testList 中第三条数据
	bee, err := config.RedisDb.LSet("testList", 2, "bee").Result()
	fmt.Print(bee)

	//在list列表testList 中值为bee 前面添加元素hello : 第二个参数有:after ,前面/后面
	config.RedisDb.LInsert("testList", "before", "bee", "hello")
	//config.RedisDb.LInsertBefore("studentList","lilei","hello") 执行效果一样

	config.RedisDb.LInsert("testList", "after", "bee", "a")
	//config.RedisDb.LInsertBefore("studentList","lilei","hello") 执行效果一样

	//LPop & LRem示例
	//从列表左边删除第一个数据,并返回删除的数据 可以理解为删除最后一个数据
	config.RedisDb.LPop("testList")

	//删除列表中的数据。删除10个值为bee的数据重复元素
	config.RedisDb.LRem("testList", 10, "bee")

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行人已

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值