初探Redis-基础类型List

目录

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

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

 

列表(List)介绍

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

161832982_c3f7120b-6fc2-457a-a553-254cd7d527c1  

列表(List)相关操作Api

LPush添加数据

161834245_878c13a8-4c9d-4199-b2ee-17bef9fa2854 将链表看成整体,进行Lpush操作,使得新添加的元素作为起始元素。

161835568_696375dd-e63f-4206-8abb-bd82f55ee469 161836812_e72cbff0-061c-4a94-bbf5-b5637dffa78d

RPush添加数据

161837927_2f326795-80cd-491b-9ecb-e2d9ba1570bc 将链表看成整体,进行Rpush操作,使得新添加的元素作为末位元素。 161839087_e2aa2ebd-8434-4242-b8e4-e900adc5c2da

161840411_e41ff1f5-0cab-479a-a1eb-0da135e105db

限定key存在执行添加数据 161841640_82566b69-cb74-4eff-abf7-a4e798af9d24

 161842752_d5023d63-0eae-4b51-93d8-fa5708de7cb1

List中指定索引处插入数据替换原有数据 161843907_6de3e69c-2e7f-42cd-a491-8609be6c2b68

161845095_f638e938-60d8-4519-bfb8-e1abb768f89b

对List中匹配的数据前或后插入新数据 161846187_078e7531-389b-42b9-9198-ffac3075c8d7

161847341_3b37b641-2591-43ac-82fc-4009a3e762a4  161848457_cc7be2dc-34d0-4901-8855-38308cad681f 

读取List中索引范围内已有数据 161849620_149ca886-afd1-4906-b67f-522a387dc4a5

通过索引范围读取范围内的数据信息 161850769_5429203d-2eb5-4925-a025-82d711ddfff0

161852010_d946426b-e09c-4cd6-a1a7-d88474ee4e3c

读取List中指定索引下已有数据 161853094_7baf77fa-6193-43e1-9300-395bb39d9f72

161854317_f06bac19-5bd4-4d09-a7be-6408ad1b0461 

获取List中数据总数 161855510_62118fdb-2c6e-4bd2-9c95-515afe6e1dbe

161856694_eee868f1-afac-4a22-a39a-7ec58b712641

移除List前部数据 161857959_f38c3cb2-f909-4b1c-b950-83baae22b11c

161859040_68723482-5db9-4fa7-bcd6-8e638c5b9370 161900259_138099e3-078f-4485-87de-9a1a9a936172

移除List尾部数据  161901392_3b094139-a674-48a8-9f01-b13830054d0f

161902651_368fae08-2c87-4ee4-a7a6-265bfc1b4bdf 161903761_c84025a4-37f7-4535-b612-1d4061968726

精简List只保留索引范围内数据 161904966_68b11746-b92c-440a-84bf-32e77aa036d4

161906092_7a53735e-34fe-4176-88ad-6085359c578c 

移除List中指定数量的匹配数据 161907204_932013be-7d53-4f9e-b2a3-cd58a682ce6e

161908537_f9efa71d-5c61-4949-b829-f40820d8ba3b

等待匹配数据直到获取或超时  161909734_76a87e92-3556-46b1-9fd2-b1a202123c9b

161911491_25b16ca5-f1c9-458e-8df6-e9b98429e8c9

从列表中移除并移入新列表 161912894_0adc380f-188d-452c-bfab-c65371c85c62

161914493_d8aaa2a3-0b5e-4195-88a2-31d10584c24d

等待从列表中移除并移入新列表直至成功或超时 161915681_f1cec89a-3d97-42af-9220-5dd8071b9116

161917063_a0ac1937-f7c5-4aa5-94f4-2f2078dcfe31  

列表(List)简单应用场景

以哈希用法时的文章列表为例,网站首页分页展示文章信息,而展示前先从list中取得分页后的文章Id集合再从Hash中获取文章概要信息并展示。

  1. 初始列表数据添加一些种子数据
service.ListLeftPush("blogId", "9527");
service.ListLeftPush("blogId", "9528");
service.ListLeftPush("blogId", "9529");
service.ListLeftPush("blogId", "9530");
...
  1. 模拟增加一条数据并裁剪已有的种子数据集合使得总体数量在给定范围内。
service.ListLeftPush("blogId", "9547");
service.ListRange<string>("blogId", 0, 20);//一个list最多2的32次方-1,范围外的被移除
  1. 模拟分页获取,从Redis-List中取出等量数据并打印展示。
var page = 1;
var size = 10;
var blogIdsPagedResult = service.ListRange<string>("blogId", (page - 1) * size, page * size - 1);
  1. 运行效果,达到预想功能。

161918198_fd09cf98-8b76-45fb-9e0a-e5f9edf2e3aa

  

仓库地址:https://gitee.com/530521314/Partner.TreasureChest/tree/master/RedisOperate

2020-05-24,望技术有成后能回来看见自己的脚步