初探Redis-基础类型List
Redis存在五种基础类型:字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。本次列举出List的常用操作。
Redis官网:https://redis.io/
一、列表(List)介绍
Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。可按照如下格式查看,整体为链式结构,c语言中,链表功能十分强大,通过指针取得内部存储地址,再通过内部存储地址去取得实际数据(具体怎么操作已还给老师)。可以方便的完成先进先出,先进后出等功能。
二、列表(List)相关操作Api
- LPush添加数据
将链表看成整体,进行Lpush操作,使得新添加的元素作为起始元素。
- RPush添加数据
将链表看成整体,进行Rpush操作,使得新添加的元素作为末位元素。
- 限定key存在执行添加数据
- List中指定索引处插入数据替换原有数据
- 对List中匹配的数据前或后插入新数据
- 读取List中索引范围内已有数据
通过索引范围读取范围内的数据信息
- 读取List中指定索引下已有数据
- 获取List中数据总数
- 移除List前部数据
- 移除List尾部数据
- 精简List只保留索引范围内数据
- 移除List中指定数量的匹配数据
- 等待匹配数据直到获取或超时
- 从列表中移除并移入新列表
- 等待从列表中移除并移入新列表直至成功或超时
三、列表(List)简单应用场景
以哈希用法时的文章列表为例,网站首页分页展示文章信息,而展示前先从list中取得分页后的文章Id集合再从Hash中获取文章概要信息并展示。
1、初始列表数据添加一些种子数据
service.ListLeftPush("blogId", "9527"); service.ListLeftPush("blogId", "9528"); service.ListLeftPush("blogId", "9529"); service.ListLeftPush("blogId", "9530");
...
2、模拟增加一条数据并裁剪已有的种子数据集合使得总体数量在给定范围内。
service.ListLeftPush("blogId", "9547"); service.ListRange<string>("blogId", 0, 20);//一个list最多2的32次方-1,范围外的被移除
3、模拟分页获取,从Redis-List中取出等量数据并打印展示。
var page = 1; var size = 10; var blogIdsPagedResult = service.ListRange<string>("blogId", (page - 1) * size, page * size - 1);
4、运行效果,达到预想功能。
仓库地址:https://gitee.com/530521314/Partner.TreasureChest.git(RedisOperate文件夹)
2020-05-24,望技术有成后能回来看见自己的脚步
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异