Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。
今天来说一下list(列表)这种数据结构,这里的列表是链表(双向列表)的结构,即获取元素或删除元素的时间复杂度为O(1)。
同样这里采用命令操作的方式进行演示:
将值从左到右依次插入到列表中:lpush books java python golang
将值从右到左依次插入到列表中:rpush books java python golang
取第几个位置的值(从0开始):lindex books 0(注意:在使用这个命令的时候,时间复杂度为O(n),因为列表本质是链表,所以当元素的个数多的时候,使用该命令效率比较慢)
注意:当后面的数字为负数时,表示为对应的倒数第几个,即 -1 表示倒数第一个
从左到右删除列表中的第一个元素:lpop books
从右到左删除列表中的第一个元素:rpop books

这里画一个图来说明一下元素插入的过程

注意:当列表中的元素使用lpop或rpop全部删除之后,该列表也会自动被删除,内存会被回收。

同理,使用rpush往列表中插入元素的过程是与上述图是相反的

注意:这里面用了一个命令keys *  这个命令是查看所有的key,不过一般不要使用这个命令,因为当key的数量非常多的时候,会影响redis的性能。

获取整个list中的指定区间的数据:lrange 0 -1
注意:第一个数字代表起始位置,第二个数字代表结束的位置(数字为负数时,即表示的对应的倒数第几个)

如果使用lpop或rpop删除列表中的全部元素会比较麻烦,尤其当列表中的元素非常多的时候;这个时候可以时候用ltrim删除列表中的全部元素,
命令为:ltrim books 1 0 (其中这个命令是保留的意思,第一个数字代表起始位置,第二个数字代表结束位置,即表示要保留的列表的区间,当第一个数字为1,第二个数字为零时,这个区间为负,即为全部删除列表中的元素;
也并不是只有1,0能全部删除列表中的元素,只要区间为负,都能删除 ,不过为了规范,还是用1和0)
#右边进左边出(队列)
rpush numbers 1 2 3 4 5 6
lpop numbers

#右边进右边出(栈)
rpush numbers 1 2 3 4 5 6
rpop numbers

获取列表中元素的个数:llen numbers

Redis 基础数据结构之二 list(列表)的更多相关文章

  1. redis基础数据结构及编码方式

    redis基础数据结构和编码方式 一.基础数据结构 1)简单动态字符串 2)双端链表 3)字典 4)跳跃表 5)整数集合 6)压缩列表 二.对象类型与编码 在redis的数据库中创建一个新的键值对时, ...

  2. redis 基础数据结构实现

    参考文献 redis数据结构分析 Skip List(跳跃表)原理详解 redis 源码分析之内存布局 Redis 基础数据结构与对象 Redis设计与实现-第7章-压缩列表 在redis中构建了自己 ...

  3. 1.基础: 万丈高楼平地起——Redis基础数据结构 学习记录

    <Redis深度历险:核心原理和应用实践>1.基础: 万丈高楼平地起——Redis基础数据结构 学习记录http://naotu.baidu.com/file/b874e2624d3f37 ...

  4. Redis——基础数据结构

    Redis提供了5种基础数据结构,分别是String,list,set,hash和zset. 1.String Redis所有的键都是String.Redis的String是动态字符串,内部结构类似J ...

  5. Redis基础数据结构

    Redis数据库中每个键值对都是由对象( c 的结构体对象)组成的. 数据库键总是一个字符串对象(string object) 数据库键的值可以使字符串对象.列表对象(list object).哈希对 ...

  6. Redis 基础数据结构之一:string(字符串)

    Redis 有 5 种基础数据结构,分别为:string (字符串).list (列表).set (集合).hash (哈希) 和 zset (有序集合),Redis存储数据的结构是键值对形式的. 首 ...

  7. Redis 基础数据结构与对象

    Redis用到的底层数据结构有:简单动态字符串.双端链表.字典.压缩列表.整数集合.跳跃表等,Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包 ...

  8. 浅析Redis基础数据结构

    Redis是一种内存数据库,所以可以很方便的直接基于内存中的数据结构,对外提供众多的接口,而这些接口实际上就是对不同的数据结构进行操作的算法,首先redis本身是一种key-value的数据库,对于v ...

  9. Redis基础数据结构-基于2.8

    SDS SDS是Redis中String的底层数据结构,数据结构如下,SDS保留了传统的C字符串表达方式即数组的最后一个元素是'/0'结尾.此外还添加了两个字段len和free,其中len表示字符串长 ...

随机推荐

  1. NMS总结

    目录 NMS总结 一. NMS 二. Soft-NMS 三. IOU-Guided NMS 四. Softer-NMS 五. DIOU-NMS 六. 总结 NMS总结 一. NMS 目标检测:同一个类 ...

  2. PCB layout注意事项

    1.信号线一般12mil以上,选15或20左右及以上 via内外径选2倍关系的,如内径10mi外径20mil,但不是绝对,内10外15.18也可. 2.mil与mm单位转换,即100mil=2.54m ...

  3. 【16】进大厂必须掌握的面试题-100个python面试

    我们整理了Python面试的主要问题清单,分为7个部分: 基本面试问题 OOPS面试问题 基本的Python程序 Python库面试问题 数据分析面试题 选择题(MCQ) 基本的Python面试问题 ...

  4. win10 hyper-v的开启和关闭

    一.开启: 1. 控制面板->程序->启用或关闭Windows功能,Windows功能中勾选hyper-v功能 2. powershell中使用管理员权限运行下面的命令 bcdedit / ...

  5. freopen ()函数

    1.格式 FILE * freopen ( const char * filename, const char * mode, FILE * stream ); 2.参数说明 filename: 要打 ...

  6. shell脚本之文件测试表达式

    1.文件测试表达式的用法 我们在编程时处理一个对象时,需要对对象进行测试,只有符合要求的才采取操作处理:这样做的好处是避免程序出错以及无所畏的消耗系统资源,这个测试的对象可以是文件.字符串.数字等. ...

  7. python的分支语句与循环

    一.分支语句 1.if else语句 语法: if 条件判断: 执行的语句块1 else : 执行语句块2 当满足条件的时候则执行语句块1 ,不满足条件就执行语句块2 注意:1.条件判断后面要加冒号& ...

  8. ZOJ 1005 Jugs(BFS)

    Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...

  9. Docker(6)- docker info 命令详解

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 显示 Docker 系统信 ...

  10. shell 之 -f -z -e -o -a -d

    # -f 文件存在 if[ -f /etc/sysconfig/network ]; then ./etc/sysconfig/network fi # -z 字串为空/ -o or / -a and ...