package com.mybatis.plus; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.*; import org.springframework.test.context.junit4.SpringRunner; import java.util.HashSet; import java.util.Set; @RunWith(SpringRunner.class) @SpringBootTest public class TestClass { @Autowired private RedisTemplate<String, String> redisTemplate; /** * zset(Sorted Set 有序集合)也是 string 類型元素的集合,且不允許重復的成員。每個元素都會關聯一個 double 類型的分數。可以通過分數將該集合中的成員從小到大進行排序。 * * zset 的成員是唯一的,但權重參數分數(score)卻可以重復。集合中的元素能夠按 score 進行排列。它可以用來做排行榜應用、取TOP/N、延時任務、范圍查找等。 * * 使用redisTemplate.opsForZSet() 操作ZSet集合 * Boolean add(K var1, V var2, double var3); * Long add(K key, Set<ZSetOperations.TypedTuple<V>> tuples) 增加一個有序集合 * * Long remove(K key, Object... values) 從有序集合中移除一個或者多個元素 * * Set<V> range(K KET, long var2, long var4); 查看ZSet集合中的元素 * * Long rank(K key, Object value) 返回有序集中指定成員的排名,其中有序集成員按分數值遞增(從小到大)順序排列 * * rank 返回有序集中指定成員的排名, 其中有序集成員按分數值遞增(從小到大)順序排列 * * range方法:通過索引區間返回有序集合成指定區間內的成員,其中有序集成員按分數值遞增(從小到大)順序排列。 * * rangeByScore方法:通過分數區間返回有序集合成指定區間內的成員,其中有序集成員按分數值遞增(從小到大)順序排列。 * * count方法:通過分數返回有序集合指定區間內的成員個數。 * * size方法:獲取有序集合的成員數。 */ @Test public void test5(){ redisTemplate.opsForZSet().add("StudentZSet","99",9.9); redisTemplate.opsForZSet().add("StudentZSet","80",8.0); redisTemplate.opsForZSet().add("StudentZSet","69",6.9); redisTemplate.opsForZSet().add("StudentZSet","52",5.4); redisTemplate.opsForZSet().add("StudentZSet","32",3.4); redisTemplate.opsForZSet().add("StudentZSet","23",3.9); System.out.println(redisTemplate.opsForZSet().range("StudentZSet",0,-1)); // 移除ZSet中的一個或多個元素 redisTemplate.opsForZSet().remove("StudentZSet","69"); System.out.println("移除ZSet中的一個或多個元素:"+redisTemplate.opsForZSet().range("StudentZSet",0,-1)); //通過分數區間返回有序集合成指定區間內的成員,其中有序集成員按分數值遞增(從小到大)順序排列。 System.out.println("通過分數區間返回有序集合成指定區間內的成員:"+redisTemplate.opsForZSet().rangeByScore("StudentZSet", 3, 8)); System.out.println("分數在4至8區間內的成員個數:" + redisTemplate.opsForZSet().count("StudentZSet", 4, 8)); // 遍歷 zset Cursor<ZSetOperations.TypedTuple<String>> cursor = redisTemplate.opsForZSet().scan("StudentZSet", ScanOptions.NONE); while (cursor.hasNext()){ ZSetOperations.TypedTuple<String> next = cursor.next(); //System.out.println(next); // 打印的對象地址 org.springframework.data.redis.core.DefaultTypedTuple@35698b75 System.out.println(next.getValue() + " 的分數值:" + next.getScore()); } } }