redisUtils封裝類工具一
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
@Service
publicclass RedisService {
@Autowired
private ShardedJedisPool shardedJedisPool;
private <T> T execute(Function<T, ShardedJedis>
ShardedJedis shardedJedis = null;
try {
// 從連線池中獲取到jedis分片物件
shardedJedis = shardedJedisPool.getResource();
returnfun.callback(shardedJedis);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != shardedJedis) {
// 關閉,檢測連線是否有效,有效則放回到連線池中,無效則重置狀態
shardedJedis.close();
}
}
returnnull;
}
/**
* 執行set操作
*
* @param key
* @param value
* @return
*/
public String set(final String key, final String value) {
returnthis.execute(new Function<String, ShardedJedis>() {
@Override
public String callback(ShardedJedis e) {
returne.set(key, value);
}
});
}
/**
* 執行GET操作
*
* @param key
* @return
*/
public String get(final String key) {
returnthis.execute(new Function<String, ShardedJedis>() {
@Override
public String callback(ShardedJedis e) {
returne.get(key);
}
});
}
/**
* 執行DEL操作
*
* @param key
* @return
*/
public Long del(final String key) {
returnthis.execute(new Function<Long, ShardedJedis>() {
@Override
public Long callback(ShardedJedis e) {
returne.del(key);
}
});
}
/**
* 設定生存時間,單位為秒
*
* @param key
* @param seconds
* @return
*/
public Long expire(final String key, final Integer seconds) {
returnthis.execute(new Function<Long, ShardedJedis>() {
@Override
public Long callback(ShardedJedis e) {
returne.expire(key, seconds);
}
});
}
/**
* 執行set操作並且設定生存時間,單位為秒
*
* @param key
* @param value
* @return
*/
publicString set(final String key, final String value, final Integer seconds) {
returnthis.execute(new Function<String, ShardedJedis>() {
@Override
public String callback(ShardedJedis e) {
String str = e.set(key, value);
e.expire(key, seconds);
returnstr;
}
});
}
}