|
@@ -0,0 +1,194 @@
|
|
|
+package com.ruoyi.project.tool.redis;
|
|
|
+
|
|
|
+import java.io.Serializable;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.redis.core.HashOperations;
|
|
|
+import org.springframework.data.redis.core.ListOperations;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+import org.springframework.data.redis.core.SetOperations;
|
|
|
+import org.springframework.data.redis.core.ValueOperations;
|
|
|
+import org.springframework.data.redis.core.ZSetOperations;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Redis工具类
|
|
|
+ * @author wangchl
|
|
|
+ *
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class RedisUtils {
|
|
|
+ @Autowired
|
|
|
+ private RedisTemplate redisTemplate;
|
|
|
+ /**
|
|
|
+ * 写入缓存
|
|
|
+ * @param key
|
|
|
+ * @param value
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean set(final String key, Object value) {
|
|
|
+ boolean result = false;
|
|
|
+ try {
|
|
|
+ ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
|
|
|
+ operations.set(key, value);
|
|
|
+ result = true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 写入缓存设置时效时间
|
|
|
+ * @param key
|
|
|
+ * @param value
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean set(final String key, Object value, Long expireTime) {
|
|
|
+ boolean result = false;
|
|
|
+ try {
|
|
|
+ ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
|
|
|
+ operations.set(key, value);
|
|
|
+ redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
|
|
|
+ result = true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 批量删除对应的value
|
|
|
+ * @param keys
|
|
|
+ */
|
|
|
+ public void remove(final String... keys) {
|
|
|
+ for (String key : keys) {
|
|
|
+ remove(key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量删除key
|
|
|
+ * @param pattern
|
|
|
+ */
|
|
|
+ public void removePattern(final String pattern) {
|
|
|
+ Set<Serializable> keys = redisTemplate.keys(pattern);
|
|
|
+ if (keys.size() > 0)
|
|
|
+ redisTemplate.delete(keys);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除对应的value
|
|
|
+ * @param key
|
|
|
+ */
|
|
|
+ public void remove(final String key) {
|
|
|
+ if (exists(key)) {
|
|
|
+ redisTemplate.delete(key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 判断缓存中是否有对应的value
|
|
|
+ * @param key
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean exists(final String key) {
|
|
|
+ return redisTemplate.hasKey(key);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 读取缓存
|
|
|
+ * @param key
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Object get(final String key) {
|
|
|
+ Object result = null;
|
|
|
+ ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
|
|
|
+ result = operations.get(key);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 哈希 添加
|
|
|
+ * @param key
|
|
|
+ * @param hashKey
|
|
|
+ * @param value
|
|
|
+ */
|
|
|
+ public void hmSet(String key, Object hashKey, Object value){
|
|
|
+ HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
|
|
|
+ hash.put(key,hashKey,value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 哈希获取数据
|
|
|
+ * @param key
|
|
|
+ * @param hashKey
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Object hmGet(String key, Object hashKey){
|
|
|
+ HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
|
|
|
+ return hash.get(key,hashKey);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 列表添加
|
|
|
+ * @param k
|
|
|
+ * @param v
|
|
|
+ */
|
|
|
+ public void lPush(String k,Object v){
|
|
|
+ ListOperations<String, Object> list = redisTemplate.opsForList();
|
|
|
+ list.rightPush(k,v);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 列表获取
|
|
|
+ * @param k
|
|
|
+ * @param l
|
|
|
+ * @param l1
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<Object> lRange(String k, long l, long l1){
|
|
|
+ ListOperations<String, Object> list = redisTemplate.opsForList();
|
|
|
+ return list.range(k,l,l1);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 集合添加
|
|
|
+ * @param key
|
|
|
+ * @param value
|
|
|
+ */
|
|
|
+ public void add(String key,Object value){
|
|
|
+ SetOperations<String, Object> set = redisTemplate.opsForSet();
|
|
|
+ set.add(key,value);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 集合获取
|
|
|
+ * @param key
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Set<Object> setMembers(String key){
|
|
|
+ SetOperations<String, Object> set = redisTemplate.opsForSet();
|
|
|
+ return set.members(key);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 有序集合添加
|
|
|
+ * @param key
|
|
|
+ * @param value
|
|
|
+ * @param scoure
|
|
|
+ */
|
|
|
+ public void zAdd(String key,Object value,double scoure){
|
|
|
+ ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
|
|
|
+ zset.add(key,value,scoure);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 有序集合获取
|
|
|
+ * @param key
|
|
|
+ * @param scoure
|
|
|
+ * @param scoure1
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Set<Object> rangeByScore(String key,double scoure,double scoure1){
|
|
|
+ ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
|
|
|
+ return zset.rangeByScore(key, scoure, scoure1);
|
|
|
+ }
|
|
|
+}
|