005:Redis-List链表类型操作
2023-03-15 22:05:09 时间
List链表类型介绍:
list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加或者删除元素。 这使得list既可以用作栈,也可以用作队列。
该list链表类型应用场合:
比如获取最新的10个登录用户信息:
select * from user order by logintime desc limit 10;
- 上面的sql语句可以实现用户需求,但是数据多的时候,全部数据都会收到影响,对数据库的负载比较高。 必要情况还需要给关键字段(id或者 logintime)设置索引,索引也比较消耗系统资源。
- 而如果通过list链表实现以上功能,可以在list链表中只保留最新的10个数据,当进来一个新数据的时候就删除一个旧数据,每次就可以从链表中直接获得需要的数据。极大节省各方面资源消耗。
List链表类型操作:
如上图所示, 通过list链表保存登录系统的最新5个用户信息: xiaoli jack xiaoming linken mary tom
我选择了第二个数据库来进行操作。
该数据库里面没有key。
这里先停一下,简单介绍下list类型操作:
然后我们看操作图来继续进行模拟。
首先lpush key string :
在key对应的头部添加了5个元素。
我们现在是设置了一个链表key,里面保存了5个元素
根据之前的图所示,目前已经有5个元素。xiaoli进入的话,需要踢出一个旧用户。
先把xiaoli添加到链表key中:
rpop key:再踢出tom
rpop key 是直接删除链表尾部的一个元素。
lrange key start end: 通过范围查找链表内部的所有元素 目前我们有5个用户。所以范围是0-4.
llen key: 返回对应list的长度。
lpop key :从list头部删除元素(跟rpop key 操作相同,不过他是从头部也就是链表left删除)
ltrim key start end : 截取list。然后保留指定区间的
常用操作如上面介绍的那些,很简单。
我们上面的链表介绍只是一边进一边出,其实list类型就是一个双向链表。 这使得list既可以用作栈,也可以用作队列。
栈:上进上出,先进后出。 队列:上进下出,先进先出。
这里先不作过多介绍了。
相关文章
- CSS偏移反爬虫的原理和破解方法
- DRF 中的模型序列化到底该怎么用?
- 浅析JDBC的ResultSet接口和使用MySQL语句查询数据
- 物联网探秘:那些来自传感器的数据都是如何上传至云端的?
- Java Web实战篇-轻松提高千万级数据库查询效率
- 数据驱动型文化是大数据成功的关键
- 数据|“全面二孩”后,想生就生了?
- STM32串口开发之环形缓冲区
- IBM斥资20亿美元收购,天气数据为何值钱?
- 想知道PHP数据库编程之MySQL优化策略概述吗?进来我告诉你
- Redis缓存高频难题一问三不知,你的亿级系统不会炸吗?
- 简述:我的2017技术流水账
- 行业报告:医疗数据泄露愈发严重,谁之过错?
- 微软开源的可视化神器,上手太酷炫了
- 互联网金融风控模型,需要多大的数据?
- 可穿戴设备数据监测登榜2016十大医疗创新
- 一个单层的基础神经网络实现手写字识别
- 一文带你了解MindSpore支持的万亿级参数超大模型关键技术!
- 2017年大数据年终盘点:开源工具、MySQL和Python是最大赢家!
- 英国警方,即将窥探你的网络足迹