1.RedisKit
package com.seryo.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.SortedSet;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import org.redisson.Redisson;
import org.redisson.api.RBucket;
import org.redisson.api.RCountDownLatch;
import org.redisson.api.RKeys;
import org.redisson.api.RList;
import org.redisson.api.RTopic;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
/**
* redis 操作辅助工具 <br />
*
* @category redis 操作辅助工具
* @className RedisKit
* @package com.xy.redis
* @description
*/
public class RedisKit {
private static interface Helper {
RedisKit INSTANCE = new RedisKit();
}
private RedissonClient client;
private RedisKit() {
}
private static ReentrantLock lock = new ReentrantLock();
/**
* 连接redis 服务
*
* @category 连接redis 服务
*/
private void connect() {
if (client == null || client.isShutdown() || client.isShuttingDown()) {
lock.lock();
try {
if (client == null || client.isShutdown() || client.isShuttingDown()) {
Config cfg = Config.fromJSON(RedisKit.class.getClassLoader().getResourceAsStream("redis.json"));
client = Redisson.create(cfg);
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
lock.unlock();
}
}
}
/**
* 断开连接<br />
* 断开连接后,如果需要重新使用,只能重新获取实例了
*
* @category 断开连接
*/
public void disconnect() {
if (client != null) {
client.shutdown();
client = null;
}
}
/**
* set 不设置过期时间
*
* @category set
* @param key
* @param value
* @return
*/
private <T> RBucket<T> _set(String key, T value) {
RBucket<T> bucket = client.getBucket(key);
bucket.set(value);
return bucket;
}
/**
* 获取缓存bucket
*
* @category 获取缓存bucket
* @author prz
* @date 2017年7月28日
* @param key
* @return
* @return RBucket<T>
*/
private <T> RBucket<T> _getBucket(String key) {
return client.<T>getBucket(key);
}
/**
* 使缓存timeout毫秒后过期
*
* @category 使缓存timeout毫秒后过期
* @author prz
* @date 2017年7月28日
* @param bucket
* @param timeout
*/
private boolean _expire(RBucket bucket, long timeout) {
return bucket.expire(timeout, TimeUnit.MILLISECONDS);
}
/**
* 使缓存timeout毫秒后过期
*
* @category 使缓存timeout毫秒后过期
* @author prz
* @date 2017年7月28日
* @param key
* @param timeout
*/
private boolean _expire(String key, long timeout) {
return _expire(_getBucket(key), timeout);
}
/**
* 使缓存在expireAt时间点过期
*
* @category 使缓存在expireAt时间点过期
* @param bucket
* @param expireAt
*/
private boolean _expireAt(RBucket bucket, long expireAt) {
return bucket.expireAt(expireAt);
}
/**
* 使缓存在expireAt时间点过期
*
* @category 使缓存在expireA