首页 / REDIS / Redis List类型
Redis List类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis List类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2664字,纯文字阅读大概需要4分钟。
内容图文
![Redis List类型](/upload/InfoBanner/zyjiaocheng/873/46a39a6495f94854a6acfdf74b261f59.jpg)
Redis List类型
Redis的List类型有两种编码:zipList和linkedList
zipList中所有的节点都是连续的在内存中排列的,加载速度快,zipList结构设计也是为了节约内存空间,但是不适合存储大量的节点
linkedList是链表结构,逻辑连续,在内存中可能是分散到各个内存空间碎片中的,因为不要求内存一定要连续,所以适合存储大量的节点
编码转换条件
- 列表中所有节点的长度都小于64字节
- 列表对象保存的节点数量小于512个
命令详解
-
LPUSH:在头部添加1个或多个节点,当key不存在时,创建一个List并将节点添加进去,否则直接在原有key的List上添加。
LPUSH <key> <elem> [elem ..]
LPUSH a 1 2 3
-
LRANGE:查看指定范围的节点,0:开始位置,-1:结束位置,
LRANGE <key> <startIndex> <stopIndex>
LRANGE a 0 -1 // 3 2 1
发现取出来的顺序和存放的顺序是反的,因为LPUSH每次添加的节点都会在List的头部添加,后加的节点反而在最前面
-
LLEN:求List的长度,
LLEN <key>
LPUSH a 1 2 3 LLEN a // 3
-
LPUSHX:只有key存在的时候才能往里面放节点,
LPUSHX <key> <elem> [elem ..]
LPUSHX b 1 2 3 // 返回0 LRANGE b 0 -1 // (empty array)
-
LPOP:返回左边(首部)第一个节点,
LPOP <key>
LPUSH a 1 2 3 LPOP a // 3
-
RPOP:返回右边(尾部)第一个节点,语法和LPOP一样,
RPOP <key>
-
BLPOP:阻塞式弹出头部节点,必须带有超时时间(timeout),单位为秒,如果List中有节点就立即返回,如果没有就阻塞timeout秒,直到有数据插入就立即返回。如果指定多个key,只要有一个key指向的List里面有数据就立即返回,
BLPOP <key> [key ..] <timeout>
BLPOP a 1 // 如果没有数据,阻塞1秒,否则立即返回 ------------ LPUSH a 1 // 可以开启另一个终端,向a里面放数据,这时候被BLPOP阻塞的终端检测到a有数据进来了,就立即返回
-
BRPOP:阻塞时在尾部弹出一个节点,用法和BLPOP一样,
BRPOP <key> [key ..] timeout
-
BRPOPLPUSH:阻塞时在尾部弹出一个节点,并加入到另一个List的头部,相当于BRPOP+RPOPLPUSH的结合体,
BRPOPLPUSH <source> <destination> <timeout>
-
RPUSH:在右边(尾部)插入一个或多个节点,和LPUSH语法一样,
RPUSH <key> <elem> [elem ..]
-
RPUSHX:在右边(尾部)插入一个或多个节点,和LPUSHX语法一样,
RPUSHX <key> <elem> [elem ..]
-
RPOPLPUSH:在List尾部弹出一个节点并加到另一个List的头部,如果另一个List不存在则创建,
RPOPLPUSH <source> <destination>
LPUSH a 1 2 RPOPLPUSH a b LRANGE a 0 -1 // 2 LRANGE b 0 -1 // 1
-
LREM:删除List重复的n个节点,
LREM <key> <count> <elem>
LPUSH a 1 2 1 2 3 LREM a 2 1 // 删除2个重复的1 LRANGE a 0 -1 // 3 2 2
-
LINDEX:获取指定下标的节点,
LINDEX <key> <index>
LPUSH a a b c LINDEX a 1 // b
-
LINSERT:在节点(positionElem)的前面(BEFORE)还是后面(AFTER)插入一个节点(insertElem),
LINSERT <key> BEFORE|AFTER <positionElem> <insertElem>
LPUSH a 1 2 3 LINSERT a BEFORE 2 12 LRANGE a 0 -1 // 3 12 2 1
-
LSET:设置指定下标节点的新值,
LSET <key> <index> <elem>
LPUSH a 1 2 3 LSET a 2 22 LRANGE a 0 -1 // 3 2 22
-
LTRIM:将原有List裁剪成指定范围的List,
LTRIM <key> <start> <end>
LPUSH a 1 2 3 4 5 LTRIM a 0 2 LRANGE a 0 -1 // 5 4 3
内容总结
以上是互联网集市为您收集整理的Redis List类型全部内容,希望文章能够帮你解决Redis List类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。