(五)redis常用命令之list

  • 概述
    列表类型用来存储多个有序的字符串,列表中的每个字符串就是一个元素,一个列表最多可以存储2^32-1个元素; redis的列表结构操作起来非常灵活,应用场景非常广。

  • lpush命令(从列表左边插入多个元素)
    格式:lpush key value1 value2 …
    在这里插入图片描述

  • rpush命令(从列表右边插入多个元素)
    格式:rpush key value1 value2 …
    在这里插入图片描述

  • linsert(向某个元素前后插入一个元素)
    格式: linsert key before | after pivot value
    在这里插入图片描述
    在这里插入图片描述
    注意:当多个元素满足条件时,在第一个前面插入指定元素,从左往右查找

  • lrange命令(获取指定返回内的元素列表)
    格式: lrange key start end
    在这里插入图片描述
    在这里插入图片描述
    注意:redis 在返回查找上就没有rrange这个命令,redis通过下标正负来区别的;从左到右下标用 0-N-1,从右到左是 -1~-N;其实就是一个元素有两个下标值这样就好理解了,比如最后一个元素,即可以是n-1也可以是-1;从左还是从右开始取决于start的取值

  • lindex命令(获取指定下标元素值)
    格式: lindex key index
    在这里插入图片描述

  • llen命令(获取list列表长度)
    格式: llen key
    在这里插入图片描述

  • lpop命令(删除最左边元素)
    格式: lpop key
    在这里插入图片描述

  • rpop命令(删除最右边元素)
    格式: rpop key
    在这里插入图片描述

  • lrem命令(删除list指定元素)
    格式:lrem key count value
    count: 当大于0时,从左往右删除等于value的count个数元素
    count: 当小于0时,从右往左删除等于value的“ |count| ” 个数元素
    count: 等于0时,删除所有等于value的元素
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • ltrim命令(修剪列表)
    格式: ltrim key start end
    在这里插入图片描述

  • lset 命令(修改list指定下标元素)
    格式: lset key index newValue
    在这里插入图片描述

  • blpop 和brpop命令(blpop和brpop阻塞版本)
    格式: blpopp key timeout
    timeout: 大于0 超时时间,如果到达超时时间会终止
    timeout: 等于0超时时间,会一直等待
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    注意:我们可以看到当timeout大于0时,到达时间会停止;当等于0,会一直等待,直到list里面有值;而且还有一个小细节,总是先等待的先获取到值。

  • 内部编码
    ziplist(压缩列表): 当list元素个数小于hlist-max-ziplist-entries并且每个元素值都小于list-max-ziplist-value字 节数
    linkedlist(链表):当不满足上面条件的时候自动转换内部编码格式为linkedlist
    在这里插入图片描述
    在这里插入图片描述

  • 使用场景
    1.消息队列
    只要使用lpush和brpop两个命令就可以实现消息队列中点对点的模型了
    在这里插入图片描述
    注意:在实际运用中,生产者只需要lpush就好,然后消费者需要while(true) 去进行阻塞式读
    2.栈
    只要在一个方向push值一个方向pop值即可,lpush+lpop=stack
    在这里插入图片描述

发布了65 篇原创文章 · 获赞 11 · 访问量 7163

猜你喜欢

转载自blog.csdn.net/weixin_38312719/article/details/95013447