初探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,望技術有成後能回來看見本身的腳步
相關文章
相關標籤/搜索