1. 程式人生 > 其它 >前端週刊第九期

前端週刊第九期

 

@Slf4j
@Component
public class RedisUtils {

    /**
     * 預設過期時長,單位:秒 一天
     */
    public final static long DEFAULT_EXPIRE = 60 * 60 * 24;
    /**
     * 不設定過期時長
     */
    public final static long NOT_EXPIRE = -1;
    private final RedisTemplate<String, Object> redisTemplate;

    public RedisUtils(RedisTemplate<String, Object> redisTemplate) {
        
this.redisTemplate = redisTemplate; } /** * 寫入快取 * * @param key * @param value * @return */ public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations<String, 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<String, 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 value * @return */ public boolean set(final String key, Object value, Long expireTime, TimeUnit timeUnit) { boolean result = false; try { ValueOperations<String, Object> operations = redisTemplate.opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, timeUnit); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 批量刪除key * * @param pattern */ public void removePattern(final String pattern) { Set<String> 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); } /** * 根據key 獲取過期時間 * * @param key 鍵 不能為null * @return 時間(秒) 返回0代表為永久有效 */ public long getExpire(String key) { return redisTemplate.getExpire(key, TimeUnit.SECONDS); } /** * 遞增 * * @param key 鍵 * @param delta 要增加幾(大於0) * @return */ public long incr(String key, long delta) { if (delta < 0) { throw new RuntimeException("遞增因子必須大於0"); } return redisTemplate.opsForValue().increment(key, delta); } /** * 遞減 * * @param key 鍵 * @param delta 要減少幾(小於0) * @return */ public long decr(String key, long delta) { if (delta < 0) { throw new RuntimeException("遞減因子必須大於0"); } return redisTemplate.opsForValue().increment(key, -delta); } /** * 讀取快取 * * @param key * @return */ public Object get(final String key) { Object result = null; ValueOperations<String, Object> operations = redisTemplate.opsForValue(); result = operations.get(key); return result; } /** * 讀取快取 * * @param key * @param clz * @param <T> * @return */ public <T> T get(String key, Class<T> clz) { Object result = null; ValueOperations<String, Object> operations = redisTemplate.opsForValue(); result = operations.get(key); if (null != result) { return Convert.convert(clz, result); } return null; } /** * 雜湊 新增 * * @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 key */ public Long hmSize(String key) { HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); return hash.size(key); } /** * 列表新增 * * @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 * @return */ public Long setRemove(String key, String value) { SetOperations<String, Object> set = redisTemplate.opsForSet(); return set.remove(key, value); } /** * 有序集合新增 * * @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); } public Collection<String> keys(final String pattern) { return redisTemplate.keys(pattern); } }