RedisService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package com.zkh360.core.util.redis;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.data.redis.core.*;
  4. import org.springframework.stereotype.Service;
  5. import java.io.Serializable;
  6. import java.util.List;
  7. import java.util.Set;
  8. import java.util.concurrent.TimeUnit;
  9. @Service
  10. public class RedisService {
  11. @Autowired
  12. private RedisTemplate redisTemplate;
  13. @Autowired
  14. private StringRedisTemplate stringRedisTemplate;
  15. /**
  16. * 写入缓存
  17. * @param key
  18. * @param value
  19. * @return
  20. */
  21. public boolean set(final String key, Object value) {
  22. boolean result = false;
  23. try {
  24. ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
  25. operations.set(key, value);
  26. result = true;
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. return result;
  31. }
  32. /**
  33. * 写入缓存设置时效时间
  34. * @param key
  35. * @param value
  36. * @return
  37. */
  38. public boolean set(final String key, Object value, Long expireTime) {
  39. boolean result = false;
  40. try {
  41. ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
  42. operations.set(key, value);
  43. redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
  44. result = true;
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. return result;
  49. }
  50. /**
  51. * 批量删除对应的value
  52. * @param keys
  53. */
  54. public void remove(final String... keys) {
  55. for (String key : keys) {
  56. remove(key);
  57. }
  58. }
  59. /**
  60. * 批量删除key
  61. * @param pattern
  62. */
  63. public void removePattern(final String pattern) {
  64. Set<Serializable> keys = redisTemplate.keys(pattern);
  65. if (keys.size() > 0) {
  66. redisTemplate.delete(keys);
  67. }
  68. }
  69. /**
  70. * 删除对应的value
  71. * @param key
  72. */
  73. public void remove(final String key) {
  74. if (exists(key)) {
  75. redisTemplate.delete(key);
  76. }
  77. }
  78. /**
  79. * 判断缓存中是否有对应的value
  80. * @param key
  81. * @return
  82. */
  83. public boolean exists(final String key) {
  84. return redisTemplate.hasKey(key);
  85. }
  86. /**
  87. * 读取缓存
  88. * @param key
  89. * @return
  90. */
  91. public Object get(final String key) {
  92. Object result = null;
  93. ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
  94. result = operations.get(key);
  95. return result;
  96. }
  97. /**
  98. * 哈希 添加
  99. * @param key
  100. * @param hashKey
  101. * @param value
  102. */
  103. public void hmSet(String key, Object hashKey, Object value){
  104. HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
  105. hash.put(key,hashKey,value);
  106. }
  107. /**
  108. * 哈希获取数据
  109. * @param key
  110. * @param hashKey
  111. * @return
  112. */
  113. public Object hmGet(String key, Object hashKey){
  114. HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
  115. return hash.get(key,hashKey);
  116. }
  117. /**
  118. * 列表添加
  119. * @param k
  120. * @param v
  121. */
  122. public void lPush(String k,Object v){
  123. ListOperations<String, Object> list = redisTemplate.opsForList();
  124. list.rightPush(k,v);
  125. }
  126. /**
  127. * 列表删除指定元素
  128. * @param k
  129. * @param l
  130. * @param l1
  131. * @return
  132. */
  133. public void trim(String k, long l, long l1){
  134. ListOperations<String, Object> list = redisTemplate.opsForList();
  135. list.trim(k,l,l1);
  136. }
  137. /**
  138. * 列表获取
  139. * @param k
  140. */
  141. @SuppressWarnings("unchecked")
  142. public List<String> rightPop(String k){
  143. ListOperations<String, Object> list = redisTemplate.opsForList();
  144. return (List<String>) list.rightPop(k);
  145. }
  146. /**
  147. * 列表获取
  148. * @param k
  149. * @param l
  150. * @param l1
  151. * @return
  152. */
  153. public List<Object> lRange(String k, long l, long l1){
  154. ListOperations<String, Object> list = redisTemplate.opsForList();
  155. return list.range(k,l,l1);
  156. }
  157. /**
  158. * 列表长度
  159. * @param k
  160. * @return
  161. */
  162. public Long size(String k){
  163. ListOperations<String, Object> list = redisTemplate.opsForList();
  164. return list.size(k);
  165. }
  166. /**
  167. * 集合添加
  168. * @param key
  169. * @param value
  170. */
  171. public void add(String key,Object value){
  172. SetOperations<String, Object> set = redisTemplate.opsForSet();
  173. set.add(key,value);
  174. }
  175. /**
  176. * 集合获取
  177. * @param key
  178. * @return
  179. */
  180. public Set<Object> getMembers(String key){
  181. SetOperations<String, Object> set = redisTemplate.opsForSet();
  182. return set.members(key);
  183. }
  184. /**
  185. * 有序集合添加
  186. * @param key
  187. * @param value
  188. * @param scoure
  189. */
  190. public void zAdd(String key,Object value,double scoure){
  191. ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
  192. zset.add(key,value,scoure);
  193. }
  194. /**
  195. * 有序集合获取
  196. * @param key
  197. * @param scoure
  198. * @param scoure1
  199. * @return
  200. */
  201. public Set<Object> rangeByScore(String key,double scoure,double scoure1){
  202. ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
  203. return zset.rangeByScore(key, scoure, scoure1);
  204. }
  205. public Long findSetSize(String key){
  206. ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
  207. return zset.size(key);
  208. }
  209. public Double findItemScore(String key, Object obj){
  210. ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
  211. return zset.score(key, obj);
  212. }
  213. /**
  214. * 有序集合添加
  215. * @param key
  216. */
  217. public Long zRemove(String key,Object... removeObj){
  218. ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
  219. return zset.remove(key,removeObj);
  220. }
  221. public Long zRemoveRange(String key,long start, long end){
  222. ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
  223. return zset.removeRange(key,start,end);
  224. }
  225. public Set<Object> keys(String pattern){
  226. return redisTemplate.keys( pattern + "*");
  227. }
  228. public Set<Object> findSetAll(String key){
  229. ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
  230. long max = zset.size(key);
  231. return zset.rangeByScore(key, 0, max);
  232. }
  233. public Long getExpire(String key){
  234. return redisTemplate.getExpire(key,TimeUnit.SECONDS);
  235. }
  236. }