Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

实例:

redis 127.0.0.1:6379> LPUSH runoobkey redis
(integer) 1
redis 127.0.0.1:6379> LPUSH runoobkey mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH runoobkey mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE runoobkey 0 101) "mysql"
2) "mongodb"
3) "redis"

在Redis中我们可以使List成为,栈、队列、阻塞队列!

1、List常用命令

1.1、LPUSH、LRANGE、RPUSH

127.0.0.1:6379> LPUSH list v1 //将一个或者多个的值插入到列表头部(左)
(integer) 1
127.0.0.1:6379> LPUSH list v2
(integer) 2
127.0.0.1:6379> LPUSH list v3
(integer) 3
127.0.0.1:6379> RPUSH list v4r  //将一个或者多个的值插入到列表尾部(右)
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1  //通过区间获取list的值
1) "v3"
2) "v2"
3) "v1"
4) "v4r"//可以看出这个顺序是:v3 v2 v1 v4r
127.0.0.1:6379>

1.2、LPOP、RPOP

127.0.0.1:6379> LPOP list //移除list第一个元素(左)
"v3"
127.0.0.1:6379> rPOP list    //移除list最后一个元素(右)
"v4r"
127.0.0.1:6379> LRANGE list 0 -1
1) "v2"
2) "v1"
127.0.0.1:6379>

1.3、Lindex

127.0.0.1:6379> LINDEX list 0 //通过下标获得list的某一个值
"v2"
127.0.0.1:6379> LINDEX list 1
"v1"

1.4、Llen

127.0.0.1:6379> LLEN list //获取list长度
(integer) 2

1.5、LREM

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
127.0.0.1:6379> LREM list 2 v4   //移除list中指定个数(2)的值(v4)
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379>

1.6、trim

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> LTRIM list 1 2   //将list在指定位置截取
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "v3"
2) "v2"
127.0.0.1:6379>

1.7、组合命令rpoplpush

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> rpoplpush list list2 //移除列表中最后一个元素到新的列表中
"v1"
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> LRANGE list2 0 -1
1) "v1"
127.0.0.1:6379>

1.8、lset

127.0.0.1:6379> EXISTS list2  //查询列表是否存在
(integer) 1
127.0.0.1:6379> LRANGE list2 0 -1
1) "v1"
127.0.0.1:6379> LSET list2 0 vv  //替换列表指定位置的值,如过不存在会报错
OK
127.0.0.1:6379> LRANGE list2 0 -1
1) "vv"
127.0.0.1:6379>

1.9、linset

127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> LINSERT list before v2 vv    //将某个值插入列表指定值的前面
(integer) 4
127.0.0.1:6379> LINSERT list after v2 vv2    //将某个值插入列表指定值的后面
(integer) 5
127.0.0.1:6379> LRANGE list 0 -1
1) "v4"
2) "v3"
3) "vv"
4) "v2"
5) "vv2"
127.0.0.1:6379>

2、小结

  • List可以被想象为一个链表,可以befor node after ,left,right进行插入;
  • 如果key不存在,创建新链表,如果存在,新增内容;
  • 如果移除了所有值,则代表不存在;
  • 在两边插入或改动,效率最高,中间元素效率偏低;

Redis(五):List集合数据类型详解相关推荐

  1. Redis(八):Zset有序集合数据类型详解

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序 ...

  2. Redis(六):Set集合数据类型详解

    Redis 的 Set 是 String 类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1). 集 ...

  3. Redis数据类型详解(五种)

    Redis支持五种数据类型,即string(字符串).hash(哈希).list(列表).set(集合)及zset(sorted set:有序集合),云吞铺子分享Redis数据类型谅解: Redis数 ...

  4. Redis五种基本数据类型底层详解(原理篇)

    Redis五种基本数据类型底层详解 详细介绍Redis用到的数据结构 简单动态字符串 SDS和C字符串的区别 总结 链表 字典 哈希表 字典 哈希算法 解决键冲突 rehash(重点) 渐进式reha ...

  5. redis 数据类型详解 以及 redis适用场景场合

    redis 数据类型详解 以及 redis适用场景场合 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访 ...

  6. Redis入门 - 数据类型:5种基础数据类型详解

    Redis所有的key(键)都是字符串.我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的5种数据类型,分别是:String.List.Set.Zset.Hash Redis入门 - 数 ...

  7. Redis系列教程(二):详解Redis的存储类型、集群架构、以及应用场景

    高并发架构系列 高并发架构系列:数据库主从同步的3种一致性方案实现,及优劣比较 高并发架构系列:Spring Cloud的核心成员.以及架构实现详细介绍 高并发架构系列:服务注册与发现的实现原理.及实 ...

  8. python六大数据类型详解

    python 六大数据类型详解 文章目录 python 六大数据类型详解 数据类型简介 Number(数值) String(字符串) Python字符串的45个方法详解 一.大小写转换 01.capi ...

  9. mysql权限和使用注意事项及mysql 数据类型详解和innodb,myisam区别

    mysql用户权限管理(Grant,Revoke) MySQL可以为不同的用户分配严格的.复杂的权限.这些操作大多都可以用SQL 指令Grant(分配权限)和Revoke(回收权限)来实现. Gran ...

最新文章

  1. windows下 Qt 静态编译
  2. 各类木材强度_木材的力学性能
  3. 【活动】HoloLens 黑科技等你来探秘
  4. 向导页设计_向导设计模式
  5. 创建office一直转圈_Windows写字板出现广告条幅:推荐用户使用在线版Office
  6. 漫步数学分析八——集合边界
  7. WP7 App性能优化(12):检测应用程序性能(Ⅴ)
  8. python数据可视化 - matplotlib专题:带数据标签的双batch的Bar图绘制示例
  9. linux看磁盘空间du df,df与du查看磁盘空间使用不一致的解决方法
  10. Cognos知识点总结
  11. NPM_出现 ETIMEDOUT
  12. 降维算法原理篇:主成分分析PCA、奇异值分解SVD、因子分析法FA、独立成分分析ICA等原理详推
  13. 机器学习——决策树(ID3)的实现
  14. vue的v-for循环中图片加载路径问题
  15. 极线几何(Epipolar Geometry)
  16. 以下python注释代码中_以下 Python注释代码不正确的是()
  17. 语音对讲广播转发模块
  18. 【Verilog-9.9】initial和always的用法
  19. Stay Hungry,Stay Foolish!Steve Jobs 毕业演讲的三点感悟
  20. (图)不可错过的好看好玩的射箭体感游戏

热门文章

  1. python request url 转义_Python爬虫入门笔记
  2. php react-native,React-Native+Mobx实现商城APP
  3. cass生成曲线要素文件_《CASS道路断面法施工技术》
  4. linux qemu运行windows,用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》...
  5. android开发隐藏软键盘,Android开发之完全隐藏软键盘的方法
  6. linux 扩展挂载盘大小_Linux 添加挂载硬盘(包含挂载大于2T以上硬盘)
  7. html盒子有哪些属性,盒子模型有哪些属性 在html5中哪些元素具有盒子模型
  8. adb 更新 android sdk,[转载]安装Android时SDK AVD MANAGER时更新报错的解决办法
  9. class触发后让另一个class加样式_Bootstrap的按钮组样式
  10. Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?