public class RedisUtil {
static enum RedisUtilType{
sixtyInSeconds(60L,TimeUnit.SECONDS);
private Long expire;
private TimeUnit timeUnit;
RedisUtilType(Long expire,TimeUnit timeUnit){
this.expire =expire;
this.timeUnit = timeUnit;
}
public Long getExpire() {
return expire;
}
public TimeUnit getTimeUnit() {
return timeUnit;
}
public void setExpire(Long expire) {
this.expire = expire;
}
public void setTimeUnit(TimeUnit timeUnit) {
this.timeUnit = timeUnit;
}
}
/**
* 默认的时间和时间类型,从上方更改
* @param redisTemplate
* @param values
*/
public static void useRedisCallback(RedisTemplate redisTemplate, Map<String,String> values){
redisTemplate.execute(new RedisCallback() {
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
values.forEach((key,value)->{
log.info("key info:{} value info:{}",key.getBytes(),value.getBytes());
// 下方的setOptions设置策略,可以更改为其他策略,当前是没有的话就插入,可以更改为其他策略
connection.set(key.getBytes(),value.getBytes(),Expiration.from(RedisUtilType.sixtyInSeconds.getExpire(),RedisUtilType.sixtyInSeconds.getTimeUnit()),RedisStringCommands.SetOption.SET_IF_ABSENT);
});
return null;
}
});
}
/**
*
* @param redisTemplate
* @param values
* @param expire
* @param timeUnit
*/
public static void useRedisCallback(RedisTemplate redisTemplate, Map<String,String> values, Long expire, TimeUnit timeUnit){
redisTemplate.execute(new RedisCallback() {
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
values.forEach((key,value)->{
log.info("key info:{} value info:{}",key.getBytes(),value.getBytes());
connection.set(key.getBytes(),value.getBytes(), Expiration.from(expire,timeUnit), RedisStringCommands.SetOption.SET_IF_ABSENT);
});
return null;
}
});
}
/**
*
* @param redisTemplate
* @param values
*/
public static void useSessionCallback(RedisTemplate redisTemplate,Map<String,String> values){
redisTemplate.execute(new SessionCallback() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
values.forEach((key,value)->{
log.info("key info:{} value info:{}",key,value);
operations.opsForValue().set(key,value, RedisUtilType.sixtyInSeconds.getExpire(),RedisUtilType.sixtyInSeconds.getTimeUnit());
});
return null;
}
});
}
/**
*
* @param redisTemplate
* @param values
* @param expire
* @param timeUnit
*/
public static void useSessionCallback(RedisTemplate redisTemplate,Map<String,String> values,Long expire,TimeUnit timeUnit){
redisTemplate.execute(new SessionCallback() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
values.forEach((key,value)->{
log.info("key info:{} value info:{}",key,value);
operations.opsForValue().set(key,value,expire,timeUnit);
});
return null;
}
});
}
}