32 changed files with 201 additions and 301 deletions
@ -0,0 +1,63 @@ |
|||||
|
package org.dromara.common.redis.config; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonInclude; |
||||
|
import com.fasterxml.jackson.annotation.JsonTypeInfo; |
||||
|
import com.fasterxml.jackson.databind.MapperFeature; |
||||
|
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
|
import com.fasterxml.jackson.databind.PropertyNamingStrategy; |
||||
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
||||
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; |
||||
|
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; |
||||
|
import org.springframework.context.annotation.Bean; |
||||
|
import org.springframework.context.annotation.Configuration; |
||||
|
import org.springframework.data.redis.connection.RedisConnectionFactory; |
||||
|
import org.springframework.data.redis.core.RedisTemplate; |
||||
|
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories; |
||||
|
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; |
||||
|
import org.springframework.data.redis.serializer.StringRedisSerializer; |
||||
|
|
||||
|
import java.time.LocalDateTime; |
||||
|
import java.time.format.DateTimeFormatter; |
||||
|
|
||||
|
/** |
||||
|
* @author sean |
||||
|
* @version 1.0 |
||||
|
* @date 2022/4/19 |
||||
|
*/ |
||||
|
@Configuration |
||||
|
@EnableRedisRepositories |
||||
|
public class RedisConfigurationTemplate { |
||||
|
|
||||
|
@Bean |
||||
|
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { |
||||
|
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); |
||||
|
redisTemplate.setConnectionFactory(factory); |
||||
|
|
||||
|
ObjectMapper objectMapper = new ObjectMapper(); |
||||
|
JavaTimeModule timeModule = new JavaTimeModule(); |
||||
|
timeModule.addDeserializer(LocalDateTime.class, |
||||
|
new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
||||
|
timeModule.addSerializer(LocalDateTime.class, |
||||
|
new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
||||
|
objectMapper.disable(MapperFeature.IGNORE_DUPLICATE_MODULE_REGISTRATIONS); |
||||
|
objectMapper.registerModules(timeModule); |
||||
|
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), |
||||
|
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); |
||||
|
|
||||
|
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); |
||||
|
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); |
||||
|
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); |
||||
|
|
||||
|
|
||||
|
StringRedisSerializer serializer = new StringRedisSerializer(); |
||||
|
redisTemplate.setKeySerializer(serializer); |
||||
|
redisTemplate.setHashKeySerializer(serializer); |
||||
|
|
||||
|
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer(objectMapper); |
||||
|
redisTemplate.setValueSerializer(jsonRedisSerializer); |
||||
|
redisTemplate.setHashValueSerializer(jsonRedisSerializer); |
||||
|
redisTemplate.afterPropertiesSet(); |
||||
|
return redisTemplate; |
||||
|
|
||||
|
} |
||||
|
} |
@ -1,263 +0,0 @@ |
|||||
package org.dromara.common.redis.utils; |
|
||||
|
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||
import org.springframework.data.redis.core.RedisTemplate; |
|
||||
import org.springframework.stereotype.Component; |
|
||||
import org.springframework.util.CollectionUtils; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.Set; |
|
||||
import java.util.concurrent.TimeUnit; |
|
||||
|
|
||||
/** |
|
||||
* @author sean |
|
||||
* @version 1.0 |
|
||||
* @date 2022/4/19 |
|
||||
*/ |
|
||||
@Component |
|
||||
public class RedisOpsUtils { |
|
||||
|
|
||||
private static RedisTemplate<String, Object> redisTemplate; |
|
||||
|
|
||||
@Autowired |
|
||||
public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) { |
|
||||
RedisOpsUtils.redisTemplate = redisTemplate; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* HSET |
|
||||
* @param key |
|
||||
* @param field |
|
||||
* @param value |
|
||||
*/ |
|
||||
public static void hashSet(String key, String field, Object value) { |
|
||||
redisTemplate.opsForHash().put(key, field, value); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* HGET |
|
||||
* @param key |
|
||||
* @param field |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Object hashGet(String key, String field) { |
|
||||
return redisTemplate.opsForHash().get(key, field); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* HKEYS |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Set<Object> hashKeys(String key) { |
|
||||
return redisTemplate.opsForHash().keys(key); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* HEXISTS |
|
||||
* @param key |
|
||||
* @param field |
|
||||
* @return |
|
||||
*/ |
|
||||
public static boolean hashCheck(String key, String field) { |
|
||||
return redisTemplate.opsForHash().hasKey(key, field); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* HDEL |
|
||||
* @param key |
|
||||
* @param fields |
|
||||
* @return |
|
||||
*/ |
|
||||
public static boolean hashDel(String key, Object[] fields) { |
|
||||
return redisTemplate.opsForHash().delete(key, fields) > 0; |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* HLEN |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static long hashLen(String key) { |
|
||||
return redisTemplate.opsForHash().size(key); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* EXPIRE |
|
||||
* @param key |
|
||||
* @param timeout |
|
||||
* @return |
|
||||
*/ |
|
||||
public static boolean expireKey(String key, long timeout) { |
|
||||
return redisTemplate.expire(key, timeout, TimeUnit.SECONDS); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* SET |
|
||||
* @param key |
|
||||
* @param value |
|
||||
*/ |
|
||||
public static void set(String key, Object value) { |
|
||||
redisTemplate.opsForValue().set(key, value); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* GET |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Object get(String key) { |
|
||||
return redisTemplate.opsForValue().get(key); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* SETEX |
|
||||
* @param key |
|
||||
* @param value |
|
||||
* @param expire |
|
||||
*/ |
|
||||
public static void setWithExpire(String key, Object value, long expire) { |
|
||||
redisTemplate.opsForValue().set(key, value, expire, TimeUnit.SECONDS); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* TTL |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static long getExpire(String key) { |
|
||||
return redisTemplate.getExpire(key, TimeUnit.SECONDS); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* EXISTS |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static boolean checkExist(String key) { |
|
||||
return redisTemplate.hasKey(key); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* DEL |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static boolean del(String key) { |
|
||||
return RedisOpsUtils.checkExist(key) && redisTemplate.delete(key); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* KEYS |
|
||||
* @param pattern |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Set<String> getAllKeys(String pattern) { |
|
||||
return redisTemplate.keys(pattern); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* RPUSH |
|
||||
* @param key |
|
||||
* @param value |
|
||||
*/ |
|
||||
public static void listRPush(String key, Object... value) { |
|
||||
if (value.length == 0) { |
|
||||
return; |
|
||||
} |
|
||||
for (Object val : value) { |
|
||||
redisTemplate.opsForList().rightPush(key, val); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* LRANGE |
|
||||
* @param key |
|
||||
* @param start |
|
||||
* @param end |
|
||||
* @return |
|
||||
*/ |
|
||||
public static List<Object> listGet(String key, long start, long end) { |
|
||||
return redisTemplate.opsForList().range(key, start, end); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* LRANGE |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static List<Object> listGetAll(String key) { |
|
||||
return redisTemplate.opsForList().range(key, 0, -1); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* LLen |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Long listLen(String key) { |
|
||||
return redisTemplate.opsForList().size(key); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* ZADD |
|
||||
* @param key |
|
||||
* @param value |
|
||||
* @param score |
|
||||
*/ |
|
||||
public static Boolean zAdd(String key, Object value, double score) { |
|
||||
return redisTemplate.opsForZSet().add(key, value, score); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* ZREM |
|
||||
* @param key |
|
||||
* @param value |
|
||||
*/ |
|
||||
public static Boolean zRemove(String key, Object... value) { |
|
||||
return redisTemplate.opsForZSet().remove(key, value) > 0; |
|
||||
} |
|
||||
/** |
|
||||
* ZRANGE |
|
||||
* @param key |
|
||||
* @param start |
|
||||
* @param end |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Set<Object> zRange(String key, long start, long end) { |
|
||||
return redisTemplate.opsForZSet().range(key, start, end); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* ZRANGE |
|
||||
* @param key |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Object zGetMin(String key) { |
|
||||
Set<Object> objects = zRange(key, 0, 0); |
|
||||
if (CollectionUtils.isEmpty(objects)) { |
|
||||
return null; |
|
||||
} |
|
||||
return objects.iterator().next(); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* ZSCORE |
|
||||
* @param key |
|
||||
* @param value |
|
||||
* @return |
|
||||
*/ |
|
||||
public static Double zScore(String key, Object value) { |
|
||||
return redisTemplate.opsForZSet().score(key, value); |
|
||||
} |
|
||||
|
|
||||
/** |
|
||||
* ZINCRBY |
|
||||
* @param key |
|
||||
* @param value |
|
||||
* @param delta |
|
||||
*/ |
|
||||
public static Double zIncrement(String key, Object value, double delta) { |
|
||||
return redisTemplate.opsForZSet().incrementScore(key, value, delta); |
|
||||
} |
|
||||
} |
|
Loading…
Reference in new issue