SortedSet實現工具類
阿新 • • 發佈:2022-02-24
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.RedisZSetCommands; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Set; /** * @author leizige */ @Component public class RedisUtil{ @Resource private ZSetOperations<String, String> zSetOperations; private final Long EMPTY = 0L; /** * 新增一個元素, zset與set最大的區別就是每個元素都有一個score,因此有個排序的輔助功能; zadd * key,value已存在,score覆蓋 * * @param key * @param value */ public boolean add(String key, String value, double score) { return zSetOperations.add(key, value, score); } /** * 查詢集合中指定順序的值 zrevrange * <p> * 返回有序的集合中,score大的在前面 * * @param key * @param offset * @param count * @return */ public Set<String> reverseRangeByScore(String key, int offset, int count) { return zSetOperations.reverseRangeByScore(key, 1, Long.MAX_VALUE, (offset - 1) * count, count); } /** * ZCARD key * <p> * 返回有序集 key 的基數。 * <p> * 可用版本: * >= 1.2.0 * 時間複雜度: * O(1) * 返回值: * 當 key 存在且是有序集型別時,返回有序集的基數。 * 當 key 不存在時,返回 0 * * @param key * @return */ public Long zCard(String key) { return zSetOperations.zCard(key); } /** * 刪除元素 zrem * * @param key * @param value */ public Long remove(String key, String value) { return zSetOperations.remove(key, value); } /** * 移除有序集 key 中,指定排名(rank)區間內的所有成員。 * <p> * 區間分別以下標引數 start 和 stop 指出,包含 start 和 stop 在內。 * <p> * 下標引數 start 和 stop 都以 0 為底,也就是說,以 0 表示有序集第一個成員,以 1 表示有序集第二個成員,以此類推。 * 你也可以使用負數下標,以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推。 * 可用版本: * >= 2.0.0 * 時間複雜度: * O(log(N)+M), N 為有序集的基數,而 M 為被移除成員的數量。 * * @param key * @param start * @param end * @return 被移除成員的數量 */ public Long removeRange(String key, long start, long end) { return zSetOperations.removeRange(key, start, end); } }