初探Redis-基础类型SortedSet

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

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

 

1、有序集合(SortedSet)介绍 

  Redis 有序集合和集合同样也是string类型元素的集合,且不容许重复的成员。不一样的是每一个元素都会关联一个float类型的分数(score)。经过分数来为集合中的成员进行从小到大的排序。有序集合的成员是惟一的,分数(score)能够重复。集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。redis

  

 

2、有序集合(SortedSet)相关操做Api

  • 添加值

  

  

  • 删除值

  

  

  • 删除key下指定索引范围内的值

  

   

  • 删除key下指定字典区间范围内的值

  

  

  • 删除key下指定分数范围内的值

  

  

  • 获取key下值的总数量

  

   

  • 获取key下指定分数范围内值的总数量

  

  

  • 获取key下指定字典范围内值的总数量

  

  

  • 获取key下索引范围内的值

  

  

  • 获取key下指定分数范围内的值

  

  

  • 获取key下指定字典区间范围内的值

  

  

  • 返回值相应索引

  

  

  • 返回值相应分数

  

  

  • 增长分数

  

  

 

3、有序集合(SortedSet)间相关操做Api

  • 多个key作并集并存储在新key中

  

  

  • 多个key作交集并存储在新key中

  

  

  • 迭代获取集合中匹配的数据

   

  

 

4、有序集合(SortedSet)简单应用场景

  简单模拟排行榜场景,对于蜀国贡献值排行高低,有蜀国成员负责实时生成贡献值,经过查看蜀国贡献排行榜能够实时获取排行状况。dom

一、启用一个线程生存各成员贡献值spa

Task.Run(() =>
{
    while (true)
    {
        foreach (var user in UserList)
        {
            Thread.Sleep(10);
            service.SortedSetAdd("蜀国贡献值", user, new Random().Next(1, 100));
        }
        Thread.Sleep(20 * 1000);
    }
});

 二、启用一个线程实时展现贡献值排行榜线程

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}");
        }
    }
});

三、效果展现,能够看到实时排行状况,结合UI呈现的话,能够作到实时榜单。3d

  

 

   仓库地址:https://gitee.com/530521314/Partner.TreasureChest.git(RedisOperate文件夹)code

2020-08-09,望技术有成后能回来看见本身的脚步
相关文章
相关标签/搜索