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 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 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 get(final String key) { Object result = null; ValueOperations 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 hash = redisTemplate.opsForHash(); hash.put(key,hashKey,value); } /** * 以map集合的形式添加键值对 * @param key 键 * @param map Map */ public void hPutAll(String key, Map map) { redisTemplate.opsForHash().putAll(key, map); } /** * 哈希获取数据 * @param key * @param hashKey * @return */ public Object hmGet(String key, Object hashKey) { HashOperations hash = redisTemplate.opsForHash(); return hash.get(key,hashKey); } /** * 根据键获取到redis中存储的map * @param key 键 * @return 键对应的map */ public Map 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 list = redisTemplate.opsForList(); list.rightPush(k,v); } /** * 列表获取 * @param k * @param l * @param l1 * @return */ public List lRange(String k, long l, long l1) { ListOperations list = redisTemplate.opsForList(); return list.range(k,l,l1); } /** * 集合添加 * @param key * @param value */ public void add(String key, Object value) { SetOperations set = redisTemplate.opsForSet(); set.add(key,value); } /** * 集合获取 * @param key * @return */ public Set setMembers(String key) { SetOperations set = redisTemplate.opsForSet(); return set.members(key); } /** * 有序集合添加 * @param key * @param value * @param scoure */ public void zAdd(String key, Object value, double scoure) { ZSetOperations zset = redisTemplate.opsForZSet(); zset.add(key,value,scoure); } /** * 有序集合获取 * @param key * @param scoure * @param scoure1 * @return */ public Set rangeByScore(String key, double scoure, double scoure1) { ZSetOperations 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; } }