redis的列表是链表的数据结构
在操作方式上来看,既可以看做队列,又可以看做为栈
就TM把它当做栈来理解!
可以认为left是栈底,right是栈顶
#这么写,可以看做是java的list
rpush [key] value1 value2
lrange [key] 0 -1
- 插入新列表
lpush [key] [value1] [value2] [value3] ...
rpush [key] [value1] [value2] [value3] ...
# 把这两个操作看作是入栈操作,就好理解了
# lpush 把value1,value2,value3依次从栈底入栈
# rpush 把value1,value2,value3 依次从栈顶入栈
- 遍历列表(遍历栈)
lrange [key] [startIndex] [endIndex]
# 遍历key这个数组,从下表为startIndex开始,遍历到下标为endIndex的元素
# 如果endIndex=-1就表示遍历到最后一位
## 也可以理解为从栈顶开始遍历
- 删除元素
lpop # 删除index最小的元素 或者可以理解为删除栈底元素
rpop # 删除index最大的元素,或者可以理解为删除栈顶元素
- 按下标选取list中的元素
lindex [list] [index]
- 查看list长度
llen [key]
- 删除N个value
lrem [key] [count] [value]
# 可以理解为,从index为0的位置开始遍历这个list
# 删除值为value的项,直到删除count项为止
- 从一个list中截取一段,删除其他
ltrim [key] [startIndex] [endIndex]
#从一个list中截取下标startIndex到endIndex的值
# 再赋值给key,原来的key中的值就被替换了
- 将一个list栈顶的一个值,放到另一个list的栈底
rpoplpush [源list] [目标list]
- 将list中指定的一个项,重新set值
lset [key] [index] [value]
# 将原来list中下标为index的元素,重新赋值为value
- 在指定的值前/后插值
linsert [key] before [value1] [value2]
# 在value1前面插入一个value2
linsert [key] after [value1] [value2]
# 在value1后面插入一个value2