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

最新文章

  1. 用JDBC做账号注册登陆
  2. ooize节点的属性控制
  3. A+B for Matrices 及 C++ transform的用法
  4. lucene合并测试的总结
  5. AWR
  6. HttpWatch网络抓包工具的使用
  7. Java 原始数据类型转换
  8. 黑马程序员:Java基础总结----正则表达式
  9. Logback.xml 给变量指定默认值
  10. iOS中 Realm错误总结整理 韩俊强的博客
  11. objc直接通过指针访问对象实例变量
  12. sqlalchemy(一)常用连接参数及包
  13. centos限制用户使用部分命令
  14. python遇到的错误
  15. 2、Docker镜像和镜像管理
  16. 基于设备树的TQ2440触摸屏驱动移植
  17. EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)
  18. LINUX第四周学习
  19. 初始化git linux上传文件常见问题
  20. POJ 1730 Perfect Pth Powers(唯一分解定理)

热门文章

  1. Redis基础(二)数据库
  2. Graph-GCN
  3. NMS总结
  4. python读取文件遇到问题及解决
  5. robotframework执行UI自动化时不能运行谷歌浏览器的问题
  6. Linux下的django项目02
  7. Windows10系统下Hadoop和Hive开发环境搭建填坑指南
  8. 导入tensorflow.出现importError: DLL load failed: 找不到指定的模块。
  9. requests库中的get()和post()方法
  10. linux开机启动设置的几种方法