Redis存在五种基础类型:字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。本次列举出Sorted Set的常用操作。
Redis官网:https://redis.io/
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个float类型的分数(score)。通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
简单模拟排行榜场景,对于蜀国贡献值排行高低,有蜀国成员负责实时生成贡献值,通过查看蜀国贡献排行榜可以实时获取排行情况。
1、启用一个线程生存各成员贡献值
Task.Run(() => { while (true) { foreach (var user in UserList) { Thread.Sleep(10); service.SortedSetAdd("蜀国贡献值", user, new Random().Next(1, 100)); } Thread.Sleep(20 * 1000); } });
2、启用一个线程实时展示贡献值排行榜
Task.Run(() => { while (true) { Thread.Sleep(12 * 1000); Console.WriteLine("**********当前排行************"); int i = 1; var items = service.SortedSetRangeByRankWithScores<string>("蜀国贡献值", 0, -1, true); foreach (var item in items) { Console.WriteLine($"第{i++}名 {item.Key} 分数{item.Value}"); } } });
3、效果展示,可以看到实时排行情况,结合UI呈现的话,可以做到实时榜单。
仓库地址:https://gitee.com/530521314/Partner.TreasureChest.git(RedisOperate文件夹)
2020-08-09,望技术有成后能回来看见自己的脚步
原文:https://www.cnblogs.com/CKExp/p/13461567.html