Redis-Redis的常用数据类型之list列表
Posted 码农飞哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis-Redis的常用数据类型之list列表相关的知识,希望对你有一定的参考价值。
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。
💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
❤️ 2. Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,买不了上当,持续更新中 。python爬虫入门进阶
❤️ 3. Ceph实战,从原理到实战应有尽有。 Ceph实战
❤️ 4. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门
😁 5. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划
全网同名【码农飞哥】欢迎关注,个人VX: wei158556
文章目录
简介
Redis中的列表是简单的字符串列表,你可以添加一个元素到列表的头部(左边)或者尾部(右边),可以用它来做微博时间轴列表,还可以充当队列
常用命令
- 从左边/右边插入一个或多个值
#从左边插入
lpush <key1> <value1> <value2> ......
#从右边插入
rpush <key1> <value1> <value2> ......
- 从左边/右边吐出一个值,取出一个值就删除这个值,值在键在,值亡键亡。
#从左边吐出
lpop <key1>
#从右边吐出
rpop <key1>
从上述示例中可以看出,从左边插入左边吐出的话,那就是先进后出的形式,从左边插入右边吐出的话那就是先进先出的形式。
- 从
<key1>
列表右边吐出一个值,插到<key2>
列表左边
rpoplpush <key1> <key2>
- 按照索引下标获得元素(从左到右), 其中
<start>
为0时指左边第一个,<stop>
为-1时指右边第一个,(0~-1 表示获取所有)
lrange <key> <start> <stop>
- 按照索引下标获得元素(从左到右)
lindex <key> <index>
- 获得列表长度
llen <key>
- 在
<value>
的前面|后面插入<newvalue>
插入值
#在`<value>` 的前面插入`<newvalue>` 插入值
linsert <key> before <value> <newvalue>
#`<value>` 的后面插入`<newvalue>` 插入值
linsert <key> after <value> <newvalue>
- 从
<value>
的左边删除n个<value>
(从左到右)
lrem <key1> <n> <value>
- 将列表
<key>
下标为<index>
的值替换成<value>
lset <key> <index> <value>
数据结构
List的数据结构为快速链表 quickList。
在列表元素较少的情况下使用一块连续的内存存储,这个结构是ziplist,也就是压缩列表。
它将所有的元素紧挨着一起存储,分配的是一块连续的内存。
当数据量较多的时候才会改成 quickList。
因为普通的链表需要的附加指针空间太大, 会比较浪费空间,比如这个列表中存的只是int类型数据,结构上海需要两个额外的指针prev和next。
Redis 将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist 使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。
详情可以了解这篇文章Redis(七)-Redis的list列表的数据结构-快速链表
参考
《Redis的设计与实现》
Redis基本类型及其数据结构
以上是关于Redis-Redis的常用数据类型之list列表的主要内容,如果未能解决你的问题,请参考以下文章