Redis_7_列表_数据类型

list(列表类型)

列表,存储多个有序的字符串,可充当栈和队列的角色

特点:可保存重复的元素,有序,可在两端插入和弹出元素,获取指定下标的原色,指定范围的元素

一、常用命令

  • rpush key v1 v2 v3(从右边插入元素)

  • lpush key v1 v2 v4(从左向右插入元素)

  • linsert key before|after pivot value(向某个元素前或者后插入元素)

  • lrange key start end(end为-1时,取所有元素)

  • lindex key index(获取指定下标下的元素,如果index为-1,则获取最后一个元素)

  • llen key (获取列表长度)

  • lpop key (从列表左侧弹出元素)

  • rpop key (从列表右侧弹出元素)

二、阻塞命令

  • blpop list:key 3 客户端等待3秒后返回。如果timeout为0则一直阻塞下去

  • brpop

三、不常用命令

  • lrem key count value (删除值为value元素,如果count为0,删除所有的value元素;count>0,则从左到右删除,最多为count个;count<0,则从右到左,删除最多count个元素)
  • lset key index newvalue (修改指定下标的元素值)
  • ltrim key start end (将会保留key列表,从start到end的元素)

四、内部编码

对外list类型,内部多种编码实现

  • ziplist(压缩列表):当列中的元素个数小于list-max-ziplist-entries配置(默认512个),同时列表中的每个元素的值都小于list-max-ziplist-value配置时(默认64字节),redis会选用ziplist作为列表的内部实现来减少内存的使用
  • linkedlist(链表):当列表类型无法满足ziplist的条件时,redis会使用linkedlist作为列表的内部实现
  • quicklist:是以一个ziplist为节点的linkedlist

五、典型使用场景

  • 消息队列

lpush + brpop 可以实现阻塞队列(消息队列,阻塞,保证了消费者处理速度)

lpush + rpop 可以实现队列

lpush + lpop 栈

猜你喜欢

转载自blog.csdn.net/zzl429556205/article/details/88544214