# Rank **Repository Path**: rainbowboy/rank ## Basic Information - **Project Name**: Rank - **Description**: 用Redis模拟排行 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-02 - **Last Updated**: 2021-12-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 使用SpringBoot+Redis实现排行功能 redis命令详解 --- Zset数据类型: 有序集合,不允许重复,数据格式[key score member] (集合名称,排序值,排序对象) - Zadd key score member: 命令用于将一个或多个成员元素及其分数值加入到有序集当中。 - Zincrby key increment member: 为有序集 key 的成员 member 的 score 值加上增量 increment 。 - Zunionstore destination numkeys key [key ...] : 命令计算给定一个或多个有序集的并集,其中给定key的数量必须以numkey参数指定,将该该并集(结果集)存储到目的地。 - Zrevrange key start stop [WITHSCORES]: 按score从大到小进行排序。 操作步骤 --- - 使用Zadd将以小时(HOUR_KEY)为单位数据存入Redis。 - 使用Zincrby对缓存中的数据(HOUR_KEY)进行添加。 - 使用Zunionstore所有数据做并集,24个小时内的数据(HOUR_KEY)并集为(DAY_KEY),7天的数据(DAY_KEY)并集为(WEEK_KEY),30天的数据为(MONTH_KEY)。 - 使用Zrevrange对数据进行排行,并进行返回。 注意: --- - 合理设置Key的过期时间,比如在对24个小时内的数据(HOUR_KEY)做并集(DAY_KEY)后可以将(HOUR_KEY)设置48小时候过期(expire)减少内存占用。 - 可以写一个while死循环每一个小时使用Zunionstore对数据做并集,保持数据的更新。 - 实际开发中Zadd中的member可以设置为字段id,后期可以使用Redis的Hash结构根据该id从数据库中查出来的对象信息进行缓存