|
@@ -1,114 +0,0 @@
|
|
|
-package cn.hfln.framework.redis.util;
|
|
|
-
|
|
|
-import cn.hfln.framework.redis.properties.RedisProperties;
|
|
|
-import org.springframework.data.redis.core.RedisTemplate;
|
|
|
-
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
-
|
|
|
-/**
|
|
|
- * Redis 工具类,封装常用操作,支持 key 前缀、默认超时、分布式锁等
|
|
|
- */
|
|
|
-public class RedisUtil {
|
|
|
- private final RedisTemplate<String, Object> redisTemplate;
|
|
|
- private final RedisProperties redisProperties;
|
|
|
-
|
|
|
- public RedisUtil(RedisTemplate<String, Object> redisTemplate, RedisProperties redisProperties) {
|
|
|
- System.out.println("【RedisUtil】构造方法被调用");
|
|
|
- this.redisTemplate = redisTemplate;
|
|
|
- this.redisProperties = redisProperties;
|
|
|
- }
|
|
|
-
|
|
|
- private String wrapKey(String key) {
|
|
|
- String prefix = redisProperties != null ? redisProperties.getKeyPrefix() : "";
|
|
|
- return prefix + key;
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= String ============================
|
|
|
- public void set(String key, Object value) {
|
|
|
- set(key, value, redisProperties != null ? redisProperties.getDefaultTimeout() : 3600, TimeUnit.SECONDS);
|
|
|
- }
|
|
|
- public void set(String key, Object value, long timeout, TimeUnit unit) {
|
|
|
- redisTemplate.opsForValue().set(wrapKey(key), value, timeout, unit);
|
|
|
- }
|
|
|
- public Object get(String key) {
|
|
|
- return redisTemplate.opsForValue().get(wrapKey(key));
|
|
|
- }
|
|
|
- public boolean del(String key) {
|
|
|
- return Boolean.TRUE.equals(redisTemplate.delete(wrapKey(key)));
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= Hash =============================
|
|
|
- public void hSet(String key, String field, Object value) {
|
|
|
- redisTemplate.opsForHash().put(wrapKey(key), field, value);
|
|
|
- }
|
|
|
- public Object hGet(String key, String field) {
|
|
|
- return redisTemplate.opsForHash().get(wrapKey(key), field);
|
|
|
- }
|
|
|
- public Map<Object, Object> hGetAll(String key) {
|
|
|
- return redisTemplate.opsForHash().entries(wrapKey(key));
|
|
|
- }
|
|
|
- public void hDel(String key, String... fields) {
|
|
|
- redisTemplate.opsForHash().delete(wrapKey(key), (Object[]) fields);
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= List =============================
|
|
|
- public void lPush(String key, Object value) {
|
|
|
- redisTemplate.opsForList().leftPush(wrapKey(key), value);
|
|
|
- }
|
|
|
- public Object lPop(String key) {
|
|
|
- return redisTemplate.opsForList().leftPop(wrapKey(key));
|
|
|
- }
|
|
|
- public List<Object> lRange(String key, long start, long end) {
|
|
|
- return redisTemplate.opsForList().range(wrapKey(key), start, end);
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= Set ==============================
|
|
|
- public void sAdd(String key, Object... values) {
|
|
|
- redisTemplate.opsForSet().add(wrapKey(key), values);
|
|
|
- }
|
|
|
- public Set<Object> sMembers(String key) {
|
|
|
- return redisTemplate.opsForSet().members(wrapKey(key));
|
|
|
- }
|
|
|
- public boolean sIsMember(String key, Object value) {
|
|
|
- return Boolean.TRUE.equals(redisTemplate.opsForSet().isMember(wrapKey(key), value));
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= ZSet =============================
|
|
|
- public void zAdd(String key, Object value, double score) {
|
|
|
- redisTemplate.opsForZSet().add(wrapKey(key), value, score);
|
|
|
- }
|
|
|
- public Set<Object> zRange(String key, long start, long end) {
|
|
|
- return redisTemplate.opsForZSet().range(wrapKey(key), start, end);
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= 通用 =============================
|
|
|
- public boolean expire(String key, long timeout, TimeUnit unit) {
|
|
|
- return Boolean.TRUE.equals(redisTemplate.expire(wrapKey(key), timeout, unit));
|
|
|
- }
|
|
|
- public long getExpire(String key, TimeUnit unit) {
|
|
|
- return redisTemplate.getExpire(wrapKey(key), unit);
|
|
|
- }
|
|
|
- public boolean hasKey(String key) {
|
|
|
- return Boolean.TRUE.equals(redisTemplate.hasKey(wrapKey(key)));
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= 原子操作 =========================
|
|
|
- public Long incr(String key) {
|
|
|
- return redisTemplate.opsForValue().increment(wrapKey(key));
|
|
|
- }
|
|
|
- public Long incrBy(String key, long delta) {
|
|
|
- return redisTemplate.opsForValue().increment(wrapKey(key), delta);
|
|
|
- }
|
|
|
-
|
|
|
- // ============================= 分布式锁(简单实现) =============
|
|
|
- public boolean tryLock(String key, String value, long timeout, TimeUnit unit) {
|
|
|
- Boolean success = redisTemplate.opsForValue().setIfAbsent(wrapKey(key), value, timeout, unit);
|
|
|
- return Boolean.TRUE.equals(success);
|
|
|
- }
|
|
|
- public void unlock(String key) {
|
|
|
- del(key);
|
|
|
- }
|
|
|
-}
|