网站运营公司排名,山东机关建设网站老版,离我最近的广告牌制作,上海网站建设咨文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素#xff0c;并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄… 文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄️返回集合内指定分数范围的成员个数Double类型❄️❄️返回集合内元素在指定分数范围内的排名从小到大❄️❄️带偏移量和个数(key起始分数最大分数偏移量个数)❄️❄️返回集合内元素的排名以及分数从小到大❄️❄️返回指定成员的排名❄️❄️从集合中删除指定元素❄️❄️删除指定索引范围的元素Long类型❄️❄️删除指定分数范围内的元素Double类型❄️❄️为指定元素加分Double类型 ⛄应用场景 ⛄概述
Redis 的 SortedSet 是一个可排序的set集合与Java中的TreeSet有些类似但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性可以基于score属性对元素排序底层的实现是一个跳表SkipList加 hash表。
SortedSet具备下列特性
可排序元素不重复查询速度快
因为SortedSet 的可排序特性经常被用来实现排行榜这样的功能。 ⛄常见命令有
ZADD key score member添加一个或多个元素到sorted set 如果已经存在则更新其score值ZREM key member删除sorted set中的一个指定元素ZSCORE key member : 获取sorted set中的指定元素的score值ZRANK key member获取sorted set 中的指定元素的排名ZCARD key获取sorted set中的元素个数ZCOUNT key min max统计score值在给定范围内的所有元素的个数ZINCRBY key increment member让sorted set中的指定元素自增步长为指定的increment值ZRANGE key min max按照score排序后获取指定排名范围内的元素ZRANGEBYSCORE key min max按照score排序后获取指定score范围内的元素ZDIFF.ZINTER.ZUNION求差集.交集.并集
注意所有的排名默认都是升序如果要降序则在命令的Z后面添加REV即可例如
升序获取sorted set 中的指定元素的排名ZRANK key member降序获取sorted set 中的指定元素的排名ZREVRANK key memeber ⛄RedisTemplate API
❄️❄️ 向集合中插入元素并设置分数
//1、通过redisTemplate设置值
redisTemplate.boundZSetOps(zSetKey).add(zSetVaule, 100D);//2、通过BoundValueOperations设置值
BoundZSetOperations zSetKey redisTemplate.boundZSetOps(zSetKey);
zSetKey.add(zSetVaule, 100D);//3、通过ValueOperations设置值
ZSetOperations zSetOps redisTemplate.opsForZSet();
zSetOps.add(zSetKey, zSetVaule, 100D);❄️❄️向集合中插入多个元素,并设置分数
DefaultTypedTupleString p1 new DefaultTypedTuple(zSetVaule1, 2.1D);
DefaultTypedTupleString p2 new DefaultTypedTuple(zSetVaule2, 3.3D);
redisTemplate.boundZSetOps(zSetKey).add(new HashSet(Arrays.asList(p1,p2)));❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部
SetString range redisTemplate.boundZSetOps(zSetKey).range(0, -1);❄️❄️获得指定元素的分数
Double score redisTemplate.boundZSetOps(zSetKey).score(zSetVaule);❄️❄️返回集合内的成员个数
Long size redisTemplate.boundZSetOps(zSetKey).size();❄️❄️返回集合内指定分数范围的成员个数Double类型
Long COUNT redisTemplate.boundZSetOps(zSetKey).count(0D, 2.2D);❄️❄️返回集合内元素在指定分数范围内的排名从小到大
Set byScore redisTemplate.boundZSetOps(zSetKey).rangeByScore(0D, 2.2D);❄️❄️带偏移量和个数(key起始分数最大分数偏移量个数)
SetString ranking2 redisTemplate.opsForZSet().rangeByScore(zSetKey, 0D, 2.2D 1, 3);❄️❄️返回集合内元素的排名以及分数从小到大
SetTypedTupleString tuples redisTemplate.boundZSetOps(zSetKey).rangeWithScores(0L, 3L);for (TypedTupleString tuple : tuples) {System.out.println(tuple.getValue() : tuple.getScore());}ss❄️❄️返回指定成员的排名
//从小到大
Long startRank redisTemplate.boundZSetOps(zSetKey).rank(zSetVaule);
//从大到小
Long endRank redisTemplate.boundZSetOps(zSetKey).reverseRank(zSetVaule);❄️❄️从集合中删除指定元素
redisTemplate.boundZSetOps(zSetKey).remove(zSetVaule);❄️❄️删除指定索引范围的元素Long类型
redisTemplate.boundZSetOps(zSetKey).removeRange(0L,3L);❄️❄️删除指定分数范围内的元素Double类型
redisTemplate.boundZSetOps(zSetKey).removeRangeByScorssse(0D,2.2D);❄️❄️为指定元素加分Double类型
Double score redisTemplate.boundZSetOps(zSetKey).incrementScore(zSetVaule,1.1D);⛄应用场景 排行榜Leaderboard: Sorted Set 是实现排行榜的理想选择。你可以将用户的分数作为元素的分数用户的 ID或者其他唯一标识符作为元素的值然后根据分数的高低来进行排名。 时间序列数据存储Time Series Data: 如果你需要存储时间序列数据并且需要按照时间顺序检索数据Sorted Set 可以胜任这项任务。你可以将时间戳作为元素的分数数据项作为元素的值这样就可以按照时间顺序检索数据。 范围查询Range Queries: 由于 Sorted Set 中的元素是按照分数有序排列的你可以很容易地执行范围查询操作比如获取分数在某个范围内的所有元素。 计数器Counter: 类似于 SetSorted Set 也可以用作计数器。每次对某个元素的分数进行增加或减少就相当于对计数器进行了加一或减一的操作。 任务调度Task Scheduling: 可以使用 Sorted Set 来实现简单的任务调度系统。将任务的执行时间作为元素的分数任务的唯一标识符作为元素的值然后根据执行时间的顺序来提取要执行的任务。 范围查找Range Retrieval: 类似于范围查询但是这里更加注重于按照分数的范围查找元素。这在某些场景下可以帮助你快速定位需要处理的数据。 活跃用户列表Active Users List: 使用 Sorted Set 来存储活跃用户的 ID可以根据用户的活跃度比如登录时间、活跃次数等作为分数然后根据活跃度来获取活跃用户列表。