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