一架梯子,一头程序猿,仰望星空!

golang redis 列表(list)用法


Redis列表是简单的字符串列表,列表是有序的,列表中的元素可以重复。

可以添加一个元素到列表的头部(左边)或者尾部(右边)

golang redis list数据操作常用函数:

  • LPush - 从列表左边插入数据
  • LPushX - 跟LPush的区别是,仅当列表存在的时候才插入数据
  • RPop - 从列表的右边删除第一个数据,并返回删除的数据
  • RPush - 从列表右边插入数据
  • RPushX - 跟RPush的区别是,仅当列表存在的时候才插入数据
  • LPop - 从列表左边删除第一个数据,并返回删除的数据
  • LLen - 返回列表的大小
  • LRange - 返回列表的一个范围内的数据,也可以返回全部数据
  • LRem - 删除列表中的数据
  • LIndex - 根据索引坐标,查询列表中的数据
  • LInsert - 在指定位置插入数据

1.LPush

从列表左边插入数据

// 插入一个数据
client.LPush("key", "data1")

// LPush支持一次插入任意个数据
err := client.LPush("key", 1,2,3,4,5).Err()
if err != nil {
	panic(err)
}

2.LPushX

跟LPush的区别是,仅当列表存在的时候才插入数据,用法完全一样。

3.RPop

从列表的右边删除第一个数据,并返回删除的数据

val, err := client.RPop("key").Result()
if err != nil {
	panic(err)
}

fmt.Println(val)

4.RPush

从列表右边插入数据

// 插入一个数据
client.RPush("key", "data1")

// 支持一次插入任意个数据
err := client.RPush("key", 1,2,3,4,5).Err()
if err != nil {
	panic(err)
}

5.RPushX

跟RPush的区别是,仅当列表存在的时候才插入数据, 他们用法一样

6.LPop

从列表左边删除第一个数据,并返回删除的数据

val, err := client.LPop("key").Result()
if err != nil {
	panic(err)
}

fmt.Println(val)

7.LLen

返回列表的大小

val, err := client.LLen("key").Result()
if err != nil {
	panic(err)
}

fmt.Println(val)

8.LRange

返回列表的一个范围内的数据,也可以返回全部数据

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

9.LRem

删除列表中的数据

// 从列表左边开始,删除100, 如果出现重复元素,仅删除1次,也就是删除第一个
dels, err := client.LRem("key",1,100).Result()
if err != nil {
	panic(err)
}

// 如果存在多个100,则从列表左边开始删除2个100
client.LRem("key",2,100)


// 如果存在多个100,则从列表右边开始删除2个100
// 第二个参数负数表示从右边开始删除几个等于100的元素
client.LRem("key",-2,100)

// 如果存在多个100,第二个参数为0,表示删除所有元素等于100的数据
client.LRem("key",0,100)

10.LIndex

根据索引坐标,查询列表中的数据

// 列表索引从0开始计算,这里返回第6个元素
val, err := client.LIndex("key",5).Result()
if err != nil {
	panic(err)
}

fmt.Println(val)

11.LInsert

在指定位置插入数据

// 在列表中5的前面插入4
// before是之前的意思
err := client.LInsert("key","before", 5, 4).Err()
if err != nil {
	panic(err)
}

// 在列表中 tizi365 元素的前面插入 欢迎你
client.LInsert("key","before", "tizi365", "欢迎你")

// 在列表中 tizi365 元素的后面插入 2019
client.LInsert("key","after", "tizi365", "2019")