.NET操作Redis List列表

一、List列表概述

Redis列表是简单的字符串列表,按照插入顺序排序。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

二、使用场景

链表的应用广泛,在获取最新的数据的场景比较多,如粉丝的关注列表、我的收藏列表、最新消息列表、排行榜、有时间轴的数据、微博的评论系统、消息传递、并行转串行、消息队列、记录日志等。

三、.NET 操作

1、顺序添加

string listid = "kgxk_list";
var litaibai = new UserInfo() { Id = 1, Name = "李太白" };
client.AddItemToList(listid, JsonConvert.SerializeObject(litaibai));
var jiaxu = new UserInfo() { Id = 2, Name = "贾诩" };
client.AddItemToList(listid, JsonConvert.SerializeObject(jiaxu));

2、在list最后一位追加值

var liubei = new UserInfo() { Id = 1, Name = "刘备" };
client.PushItemToList(listid, JsonConvert.SerializeObject(liubei));

3、设置过期时间

string listid = "kgxk_list";
var litaibai = new UserInfo() { Id = 1, Name = "李太白" };
client.AddItemToList(listid, JsonConvert.SerializeObject(litaibai));
var liubei = new UserInfo() { Id = 2, Name = "刘备" };
client.PushItemToList(listid, JsonConvert.SerializeObject(liubei));
//只在内存中存储一秒
client.ExpireEntryAt(listid, DateTime.Now.AddSeconds(1));
Console.WriteLine(client.GetListCount(listid));
Task.Delay(1 * 1000).Wait();
Console.WriteLine("1秒之后");
Console.WriteLine(client.GetListCount(listid));
//雪崩 问题:瞬间大量的数据消失-》大量的数据不要一下的全部消失

4、设置过期时间 插队(排到第一位)

var litaibai = new UserInfo() { Id = 1, Name = "李太白" };
client.AddItemToList(listid, JsonConvert.SerializeObject(litaibai));
var jiaxu = new UserInfo() { Id = 2, Name = "贾诩" };
client.AddItemToList(listid, JsonConvert.SerializeObject(jiaxu));
var gaunyu = new UserInfo() { Id = 3, Name = "关羽" };
//向右追加就是插队
client.PrependItemToList(listid, JsonConvert.SerializeObject(gaunyu));
Console.WriteLine("插队");
var caomegndeng = new UserInfo() { Id = 4, Name = "曹孟德" };
client.PrependItemToList(listid, JsonConvert.SerializeObject(caomegndeng));

5、批量添加

client.AddRangeToList(listid, new List<string>() { "001", "002", "003", "004" });
//批量去读取list中的元素
var lists = client.GetAllItemsFromList(listid);
foreach (var item in lists)
{
   Console.WriteLine(item);
}

6、获取key中下标为star到end的值集合

client.AddRangeToList(listid, new List<string>() { "001", "002", "003", "004" });
var lists = client.GetRangeFromList(listid, 0, 1);//从下标0到1的值
foreach (var item in lists)
{
    Console.WriteLine(item);
}

7、list 队列和集合操作 mq

var litaibai = new UserInfo() { Id = 1, Name = "李太白" };
client.AddItemToList(listid, JsonConvert.SerializeObject(litaibai));
var jiaxu = new UserInfo() { Id = 2, Name = "贾诩" };
client.AddItemToList(listid, JsonConvert.SerializeObject(jiaxu));
var gaunyu = new UserInfo() { Id = 3, Name = "关羽" };
client.AddItemToList(listid, JsonConvert.SerializeObject(gaunyu));
var caomegndeng = new UserInfo() { Id = 3, Name = "曹孟德" };
client.PrependItemToList(listid, JsonConvert.SerializeObject(caomegndeng));
//移除尾部 并返回移除的数据 先删再给数据
Console.WriteLine(client.RemoveEndFromList(listid));
foreach (var item in client.GetAllItemsFromList(listid))
{
  Console.WriteLine(JsonConvert.DeserializeObject<UserInfo>(item).Name);
}
//移除头部并返回移除的数据
Console.WriteLine(client.RemoveStartFromList(listid));
foreach (var item in client.GetAllItemsFromList(listid))
{
   Console.WriteLine(JsonConvert.DeserializeObject<UserInfo>(item).Name);
}
//从一个list的尾部移除一个数据,添加到另外一个list的头部,并返回移动的值
Console.WriteLine(client.PopAndPushItemBetweenLists(listid, "newlist"));
Console.WriteLine("移动之后新队列的元素结果");
Console.WriteLine(client.GetItemFromList("newlist", 0));
//根据下标获取想要的集合元素,不做移除操作
var userstr = client.GetItemFromList(listid, 0);
Console.WriteLine(JsonConvert.DeserializeObject<UserInfo>(userstr).Name);
//修改当前下标的结果
client.SetItemInList(listid, 0, "new value");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值