list先进先出_Redis使用初探—list

本文详细介绍了Redis中的List数据类型,包括LPush、RPush等常用操作,并展示了如何在实际应用中,如文章列表分页展示,有效地利用List进行数据管理。同时,通过示例代码解释了如何添加、读取、更新和删除List中的数据,以及如何对List进行修剪和匹配数据操作。此外,还探讨了List在分页获取和数据同步等方面的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4004b2ec6604c578974b3057e5c157f1.png

 Redis存在五种基础类型:字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。本次列举出List的常用操作。

  Redis官网:https://redis.io/

一、列表(List)介绍

  Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。可按照如下格式查看,整体为链式结构,c语言中,链表功能十分强大,通过指针取得内部存储地址,再通过内部存储地址去取得实际数据(具体怎么操作已还给老师)。可以方便的完成先进先出,先进后出等功能。

ebefd3debfd8e41b6f052d5a110afbe6.png

二、列表(List)相关操作Api

  • LPush添加数据

0f701fb77337d02d2f833b70e81e50f0.png

  将链表看成整体,进行Lpush操作,使得新添加的元素作为起始元素。

4085843ad9fccb7d5d0dcca8789490bd.png

  eg:

b3a0fe99da2b224653ec487d1f643214.png
  • RPush添加数据

fc510680e038e4a7412efb9842a7cdc4.png

  将链表看成整体,进行Rpush操作,使得新添加的元素作为末位元素。

7622335222644365e57d07cf1b7dacdf.png

  eg:

7b2e3c7dec6aabffa7788cf32f20cae0.png
  • 限定key存在执行添加数据

b45d59f4118313286213cc428c3cc674.png

  eg:

7c318c4ca9e25b0335a809822a6ad103.png
  • List中指定索引处插入数据替换原有数据

b3296ac30062534058db9288f44ab952.png

  eg:

6b08ff845cb13c81ec5935a8858e5861.png
  • 对List中匹配的数据前或后插入新数据

3551b0dc0006f61e6e2ad299785600b6.png

f91ab1bbcf02cfb7e7fad37065288f89.png

  eg:

009981280a593890837ede23fa99a356.png
  • 读取List中索引范围内已有数据

b49eecc3a08242176f320c68dc85cb72.png

  通过索引范围读取范围内的数据信息

5d19df50f4c35853ab7a3e5306babb92.png

  eg:

5589cc3ed4d9613e49c612e3f53a37b1.png
  • 读取List中指定索引下已有数据

972bae093167eafe873841162c2aedde.png

  eg:

8a2c97522fcf39ea7942ed50d700de21.png
  • 获取List中数据总数

deb0c027a2d6956843b4669ec4904eb1.png

  eg:

b30e63a68c35bdb8f41b32fd86c7eedd.png
  • 移除List前部数据

8a7cd5443ccddce38352df08a3bfca5e.png

6b9aab40b03d722678e782e4118e97ef.png

  eg:

553a702cb51015697a875101c86487b6.png
  • 移除List尾部数据

e4099c006bf86d64e0b21a81a81f039d.png

de825cb9b8167a5d72f855fa6a99ff47.png

  eg:

02a24e4e1019cbd5b4003a600ecc335c.png
  • 精简List只保留索引范围内数据

4b31744f44d3a34d0df229d0945f8033.png

  eg:

56507d741702df21d9a10ed65ce8be4e.png
  • 移除List中指定数量的匹配数据

061286db338ffef38c965b4935296016.png

  eg:

779a12fb79f803579b74ffafe30b2418.png
  • 等待匹配数据直到获取或超时

49ab2f741769b799fbd1479901e03ace.png

  eg:

6aba623c8cc36b3b9e4d0a261482fd33.png
  • 从列表中移除并移入新列表

0e7d911e141f815923b75d8d2a81104d.png

  eg:

3c55fb8559c8f723eeeb1df9b261ca57.png
  • 等待从列表中移除并移入新列表直至成功或超时

17e0cc6b6e384af560ceb98ec0ac50d5.png

  eg:

f87d61b70fb3fee96845d0a7333c6846.png

三、列表(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、运行效果,达到预想功能。

c9ebc8ce6908a228a9ef940eef0f7ed8.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值