RedisUtils.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.sqx.common.utils;
  2. import org.springframework.data.redis.core.HashOperations;
  3. import org.springframework.data.redis.core.RedisTemplate;
  4. import org.springframework.data.redis.core.script.DefaultRedisScript;
  5. import org.springframework.stereotype.Component;
  6. import javax.annotation.Resource;
  7. import java.util.Arrays;
  8. import java.util.Collection;
  9. import java.util.Date;
  10. import java.util.Map;
  11. import java.util.Set;
  12. import java.util.concurrent.TimeUnit;
  13. /**
  14. * Redis工具类
  15. *
  16. */
  17. @Component
  18. public class RedisUtils {
  19. @Resource
  20. private RedisTemplate<String, Object> redisTemplate;
  21. /**
  22. * 默认过期时长为24小时,单位:秒
  23. */
  24. public final static long DEFAULT_EXPIRE = 60 * 60 * 24;
  25. /**
  26. * 过期时长为6小时,单位:秒
  27. */
  28. public final static long HOUR_SIX_EXPIRE = 60 * 60 * 6L;
  29. /**
  30. * 过期时长为1小时,单位:秒
  31. */
  32. public final static long HOUR_ONE_EXPIRE = 60 * 60 * 1L;
  33. /**
  34. * 过期时长为半小时,单位:秒
  35. */
  36. public final static long HALF_HOUR_ONE_EXPIRE = 30 * 60 * 1L;
  37. /**
  38. * 过期时长为10分钟时,单位:秒
  39. */
  40. public final static long TEN_MINUTE_ONE_EXPIRE = 10 * 60 * 1L;
  41. /** 不设置过期时长 */
  42. public final static long NOT_EXPIRE = -1;
  43. public void set(String key, Object value, long expire) {
  44. redisTemplate.opsForValue().set(key, value);
  45. if (expire != NOT_EXPIRE) {
  46. expire(key, expire);
  47. }
  48. }
  49. public void set(String key, Object value) {
  50. redisTemplate.opsForValue().set(key, value);
  51. }
  52. public Object get(String key, long expire) {
  53. Object value = redisTemplate.opsForValue().get(key);
  54. if (expire != NOT_EXPIRE) {
  55. expire(key, expire);
  56. }
  57. return value;
  58. }
  59. public Object get(String key) {
  60. return get(key, NOT_EXPIRE);
  61. }
  62. public Long increment(String key) {
  63. return redisTemplate.opsForValue().increment(key);
  64. }
  65. public Boolean hasKey(String key) {
  66. return redisTemplate.hasKey(key);
  67. }
  68. public Set<String> keys(String pattern) {
  69. return redisTemplate.keys(pattern);
  70. }
  71. public void delete(String key) {
  72. redisTemplate.delete(key);
  73. }
  74. public void delete(Collection<String> keys) {
  75. redisTemplate.delete(keys);
  76. }
  77. public Object hGet(String key, String field) {
  78. return redisTemplate.opsForHash().get(key, field);
  79. }
  80. public Map<String, Object> hGetAll(String key) {
  81. HashOperations<String, String, Object> hashOperations = redisTemplate.opsForHash();
  82. return hashOperations.entries(key);
  83. }
  84. public void hMSet(String key, Map<String, Object> map) {
  85. hMSet(key, map, DEFAULT_EXPIRE);
  86. }
  87. public void hMSet(String key, Map<String, Object> map, long expire) {
  88. redisTemplate.opsForHash().putAll(key, map);
  89. if (expire != NOT_EXPIRE) {
  90. expire(key, expire);
  91. }
  92. }
  93. public void hSet(String key, String field, Object value) {
  94. hSet(key, field, value, DEFAULT_EXPIRE);
  95. }
  96. public void hSet(String key, String field, Object value, long expire) {
  97. redisTemplate.opsForHash().put(key, field, value);
  98. if (expire != NOT_EXPIRE) {
  99. expire(key, expire);
  100. }
  101. }
  102. public void expire(String key, long expire) {
  103. redisTemplate.expire(key, expire, TimeUnit.SECONDS);
  104. }
  105. public void expireAt(String key, Date expire) {
  106. redisTemplate.expireAt(key, expire);
  107. }
  108. public Long getExpire(String key) {
  109. return redisTemplate.getExpire(key, TimeUnit.SECONDS);
  110. }
  111. public void hDel(String key, Object... fields) {
  112. redisTemplate.opsForHash().delete(key, fields);
  113. }
  114. public void leftPush(String key, Object value) {
  115. leftPush(key, value, DEFAULT_EXPIRE);
  116. }
  117. public void leftPush(String key, Object value, long expire) {
  118. redisTemplate.opsForList().leftPush(key, value);
  119. if (expire != NOT_EXPIRE) {
  120. expire(key, expire);
  121. }
  122. }
  123. public Object rightPop(String key) {
  124. return redisTemplate.opsForList().rightPop(key);
  125. }
  126. public Long execute(String key, String script, Object... args) {
  127. return redisTemplate.execute(new DefaultRedisScript<>(script, Long.class), Arrays.asList(key), args);
  128. }
  129. }