zoukankan      html  css  js  c++  java
  • 初探Redis-基础类型SortedSet

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

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

    一、有序集合(SortedSet)介绍 

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

      

    二、有序集合(SortedSet)相关操作Api

    • 添加值

      

      

    • 删除值

      

      

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

      

       

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

      

      

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

      

      

    • 获取key下值的总数量

      

       

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

      

      

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

      

      

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

      

      

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

      

      

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

      

      

    • 返回值相应索引

      

      

    • 返回值相应分数

      

      

    • 增加分数

      

      

    三、有序集合(SortedSet)间相关操作Api

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

      

      

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

      

      

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

       

      

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

      简单模拟排行榜场景,对于蜀国贡献值排行高低,有蜀国成员负责实时生成贡献值,通过查看蜀国贡献排行榜可以实时获取排行情况。

    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,望技术有成后能回来看见自己的脚步
  • 相关阅读:
    [原]获取openstack-pike安装包
    [原]Failed connect to mirrors.cloud.aliyuncs.com:80; Connection refused
    [原]shell批量文件增删改前后缀
    [原]CentOS 7 chrony 笔记
    [原]Docker-issue(2) http: server gave HTTP response to HTTPS client
    [原]Docker-issue(1) image name 显示为 <none>
    [原]Django(1)----Django-setting中的STATIC_URL 和STATIC_ROOT 和STATICFILES_DIRS 的区别
    [原]Django-issue(1)---postgresql数据库连接密码错误
    [转]50个极好的bootstrap 后台框架主题下载
    [原]eclipse + pydev :Error in sitecustomize; set PYTHONVERBOSE for tracaeback: KeyError: 'sitecustomize'
  • 原文地址:https://www.cnblogs.com/CKExp/p/13461567.html
Copyright © 2011-2022 走看看