package com.dsh.app.util.tencentcloudim.util;
|
|
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.data.redis.support.atomic.RedisAtomicLong;
|
import org.springframework.stereotype.Component;
|
|
import java.io.Serializable;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.concurrent.TimeUnit;
|
|
@Component
|
public class RedisServiceUtil {
|
@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;
|
}
|
|
/**
|
* 设置指定键的过期时间
|
* @param key 键
|
* @param expireTime 过期时间
|
* @param timeUnit 时间单位
|
* @return true:成功
|
*/
|
public boolean setExpire(final String key, Long expireTime, TimeUnit timeUnit) {
|
return redisTemplate.expire(key, expireTime, timeUnit);
|
}
|
|
/**
|
* 批量删除对应的value
|
* @param keys
|
*/
|
public void remove(final String... keys) {
|
for (String key : keys) {
|
remove(key);
|
}
|
}
|
|
/**
|
* 删除对应的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 <T> T get(final String key) {
|
Object result = null;
|
ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
|
result = operations.get(key);
|
if (null == result) {
|
return null;
|
}
|
return (T)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);
|
}
|
|
/**
|
* 以map集合的形式添加键值对
|
* @param key 键
|
* @param map Map
|
*/
|
public void hPutAll(String key, Map<String, Object> map) {
|
redisTemplate.opsForHash().putAll(key, map);
|
}
|
|
/**
|
* 哈希获取数据
|
* @param key
|
* @param hashKey
|
* @return
|
*/
|
public Object hmGet(String key, Object hashKey) {
|
HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
|
return hash.get(key,hashKey);
|
}
|
|
/**
|
* 根据键获取到redis中存储的map
|
* @param key 键
|
* @return 键对应的map
|
*/
|
public Map<String, Object> hGetAll(String key) {
|
return redisTemplate.opsForHash().entries(key);
|
}
|
|
/**
|
* 自增/自减key对应map中的指定字段的long型数值
|
* @param key 键
|
* @param field key对应map中存储的字段
|
* @param increment 正数-自增;负数-自减
|
* @return 自增/自减后的数值
|
*/
|
public Long hashIncrBy(String key, Object field, long increment) {
|
return redisTemplate.opsForHash().increment(key, field, increment);
|
}
|
|
/**
|
* 自增/自减key对应map中的指定字段的double型数值
|
* @param key 键
|
* @param field key对应map中存储的字段
|
* @param delta 正数-自增;负数-自减
|
* @return 自增/自减后的数值
|
*/
|
public Double hIncrByDouble(String key, Object field, double delta) {
|
return redisTemplate.opsForHash().increment(key, field, delta);
|
}
|
|
/**
|
* 查询redis中指定字段是否存在
|
* @param key 键
|
* @param field key对应map中存储的字段
|
* @return true:存在
|
*/
|
public boolean hashExists(String key, String field) {
|
return redisTemplate.opsForHash().hasKey(key, field);
|
}
|
|
/**
|
* 列表添加
|
* @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);
|
}
|
|
/**
|
* redis原子型自增
|
* */
|
public Long incr(String key){
|
RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
|
Long increment = entityIdCounter.getAndIncrement();
|
return increment;
|
}
|
}
|