package com.ks.lucky.manager;
|
|
import org.springframework.stereotype.Component;
|
import org.yeshi.utils.SerializeUtil;
|
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.JedisPool;
|
import redis.clients.jedis.params.SetParams;
|
|
import javax.annotation.Resource;
|
import java.util.Set;
|
|
@Component
|
public class RedisManager {
|
@Resource
|
private JedisPool jedisPool;
|
|
public Jedis getJedis() {
|
Jedis jedis = jedisPool.getResource();
|
return jedis;
|
}
|
|
private void setString(String key, String value, int seconds) {
|
Jedis jedis = getJedis();
|
try {
|
jedis.setex(key, seconds, value);
|
} finally {
|
jedis.close();
|
}
|
}
|
|
/**
|
* 缓存字符串
|
*
|
* @param key
|
* @param value
|
*/
|
private void setString(String key, String value) {
|
Jedis jedis = getJedis();
|
try {
|
jedis.set(key, value);
|
} finally {
|
jedis.close();
|
}
|
|
}
|
|
|
public void remove(String... keys) {
|
Jedis jedis = getJedis();
|
try {
|
jedis.del(keys);
|
} finally {
|
jedis.close();
|
}
|
}
|
|
public void removePrefix(String... keys) {
|
Jedis jedis = getJedis();
|
try {
|
for (String key : keys) {
|
Set<String> sets = jedis.keys(key + "*");
|
if (sets != null) {
|
for (String k : sets) {
|
jedis.del(k);
|
}
|
}
|
}
|
} finally {
|
jedis.close();
|
}
|
}
|
|
private String getString(String key) {
|
Jedis jedis = getJedis();
|
try {
|
return jedis.get(key);
|
} finally {
|
jedis.close();
|
}
|
}
|
|
|
public String getCommonString(String key) {
|
return getString(key);
|
}
|
|
public void cacheCommonString(String key, String value, int seconds) {
|
setString(key, value, seconds);
|
}
|
|
public void cacheCommonString(String key, String value) {
|
setString(key, value);
|
}
|
|
/**
|
* 从redis缓存中查询,反序列化
|
*
|
* @param redisKey
|
* @return
|
*/
|
public Object getDataFromRedis(String redisKey) {
|
//查询
|
Jedis jedis = jedisPool.getResource();
|
try {
|
byte[] result = jedis.get(redisKey.getBytes());
|
|
//如果查询没有为空
|
if (null == result) {
|
return null;
|
}
|
|
//查询到了,反序列化
|
return SerializeUtil.unSerialize(result);
|
} finally {
|
jedis.close();
|
}
|
}
|
|
/**
|
* 将数据库中查询到的数据放入redis
|
*
|
* @param redisKey
|
* @param obj
|
*/
|
public void setDataToRedis(String redisKey, Object obj, Integer seconds) {
|
|
//序列化
|
byte[] bytes = SerializeUtil.serialize(obj);
|
|
SetParams params = null;
|
if (seconds != null) {
|
params = new SetParams().nx().ex(seconds);
|
}
|
//存入redis
|
Jedis jedis = jedisPool.getResource();
|
try {
|
jedis.set(redisKey.getBytes(), bytes, params);
|
} finally {
|
jedis.close();
|
}
|
}
|
|
|
}
|