|
@@ -0,0 +1,99 @@
|
|
|
+import org.example.Main;
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.data.redis.core.ZSetOperations;
|
|
|
+
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+@SpringBootTest(classes = Main.class)
|
|
|
+public class ZSetTest {
|
|
|
+ @Autowired
|
|
|
+ private RedisTemplate<String, String> redisTemplate;
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testAdd(){
|
|
|
+ redisTemplate.opsForZSet().add("student","wangwu",60);
|
|
|
+ redisTemplate.opsForZSet().add("student","lishi",100);
|
|
|
+ redisTemplate.opsForZSet().add("student","zhangshan",90);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分数的增减
|
|
|
+ @Test
|
|
|
+ public void testScore(){
|
|
|
+ // 增加分数
|
|
|
+ redisTemplate.opsForZSet().incrementScore("student","wangwu",30);
|
|
|
+
|
|
|
+ // 减少分数
|
|
|
+ redisTemplate.opsForZSet().incrementScore("student","wangwu",-50);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询一个元素的信息
|
|
|
+ @Test
|
|
|
+ public void testFindOne(){
|
|
|
+ //查询一个元素的分数
|
|
|
+ Double score = redisTemplate.opsForZSet().score("student", "wangwu");
|
|
|
+ System.out.println(redisTemplate.opsForZSet().rank("student", "wangwu"));
|
|
|
+ System.out.println(score);
|
|
|
+
|
|
|
+ //查询一个元素在集合中的排名 排名从0开始
|
|
|
+ Long rank = redisTemplate.opsForZSet().rank("student", "zhangshan");
|
|
|
+ System.out.println(rank);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //根据区间获取列表
|
|
|
+ @Test
|
|
|
+ public void testFindList(){
|
|
|
+ //根据排名区间获取元素列表
|
|
|
+ Set<String> students = redisTemplate.opsForZSet().range("student",0,2);
|
|
|
+ for (String student : students) {
|
|
|
+ System.out.println(student);
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("-------------");
|
|
|
+ Set<ZSetOperations.TypedTuple<String>> student = redisTemplate.opsForZSet().rangeWithScores("student", 0, 2);
|
|
|
+ for (ZSetOperations.TypedTuple<String> stringTypedTuple : student) {
|
|
|
+ System.out.println(stringTypedTuple.getValue()+"同学,得了"+stringTypedTuple.getScore()+"分");
|
|
|
+ }
|
|
|
+ System.out.println("-----------------------------");
|
|
|
+ //根据排名区间获取元素列表
|
|
|
+ Set<String> students1 = redisTemplate.opsForZSet().rangeByScore("student",50,100);
|
|
|
+ for (String student1 : students1) {
|
|
|
+ System.out.println(student1);
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("-------------");
|
|
|
+ Set<ZSetOperations.TypedTuple<String>> student1 = redisTemplate.opsForZSet().rangeByScoreWithScores("student", 50, 100);
|
|
|
+ for (ZSetOperations.TypedTuple<String> stringTypedTuple : student1) {
|
|
|
+ System.out.println(stringTypedTuple.getValue()+"同学,得了"+stringTypedTuple.getScore()+"分");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //统计
|
|
|
+ @Test
|
|
|
+ public void testCount(){
|
|
|
+ //统计一个集合中元素
|
|
|
+ Long student = redisTemplate.opsForZSet().zCard("student");
|
|
|
+ System.out.println(student);
|
|
|
+
|
|
|
+ //根据一个分数区间统计元素数量
|
|
|
+ Long count = redisTemplate.opsForZSet().count("student", 50, 100);
|
|
|
+ System.out.println(count);
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除
|
|
|
+ @Test
|
|
|
+ public void testRemove(){
|
|
|
+ //根据key-value删除 value允许传入多个
|
|
|
+ redisTemplate.opsForZSet().remove("student","zhangsan","lisi");
|
|
|
+
|
|
|
+ //根据排名区间删除
|
|
|
+ redisTemplate.opsForZSet().removeRange("student",0,1);
|
|
|
+
|
|
|
+ //根据分数区间删除
|
|
|
+ redisTemplate.opsForZSet().removeRangeByScore("student",70,90);
|
|
|
+ }
|
|
|
+}
|