redis基本数据结构-列表list
- 特性
- 每个列表键最多存储 2^32 - 1个字符串元素
- 元素在列表中有序
- 元素在列表中不唯一
- 向列表左侧添加元素
lpush key value
lpush number 1
lpush number 2
number = [2, 1]
- 向列表右侧添加元素
rpush key value
rpush number 3
rpush number 4
rpush number 5
number = [2, 1, 3, 4, 5]
- 从列表左侧弹出元素
lpop key
lpop number
返回2, number = [1, 3, 4, 5]
- 从列表右侧弹出元素
rpop key
rpop number
返回5, number = [1, 3, 4]
- 获取列表中元素个数
llen key
llen number
返回3, number = [1, 3, 4]
- 获取列表片段(切片)
lrange key startIndex endIndex
lrange number 0 1
返回1, 3
lrange number 0 -1
返回1, 3, 4
说明: [startIndex, endIndex] 为闭区间, 负数index指示从后往前的index,最后一个为-1
- 删除列表中的前count个元素中置为value的元素
lren key count value
lpush number 3
number = [3, 1, 3, 4]
lrem number 3 3 // 删除前3个元素中值为3的元素
lrem number 3 3
返回2(实际删除个数)
number = [1, 4]
- 获取指定位置的元素值
lindex key index
lpush number 2
number = [2, 1, 4]
lindex number 0 === 2
lindex number 1 === 1
lindex number 2 === lindex number -1 === 4
- 设置指定位置的元素值
lset key index value
lset number 0 hello
number = [hello, 1, 4]
- 删除置顶范围以外的元素
ltrim key startIndex endIndex
说明: [startIndex, endIndex] 为闭区间
ltrim number 0 1
number = [hello, 1]
- 向列表中指定元素值前/后插入元素(是在从左侧开始第一个该指定值出现的位置前/后)
linsert key BEFORE/AFTER pivot value
lpush number 1
number = [1, hello, 1]
linsert number before 1 2
number = [2, 1, hello, 1]
linsert number after 1 3
number = [2, 1, 3, hello, 1]
- 将一个列表移动到另一个列表(每次只移动一个元素)
rpoplpush key1 key2
number = [2, 1, 3, hello, 1]
rpoplpush number number2
number = [2, 1, 3, hello]
number2 = [1]
rpoplpush number number2
number = [2, 1, 3]
number2 = [hello, 1]