package com.unicom.microserv.ai.semantic.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* @description redis工具类
* @author liutao
* @date 20210616
*/
@Component
public class RedisStringUtil {
private static Logger logger = LoggerFactory.getLogger(RedisStringUtil.class);
@Autowired
private RedisTemplate<String, String> redisTemplate;
/**
* 普通缓存获取
* @param key 键
* @return 值
*/
public Object getDataId(String key) {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
/**
* 普通缓存保存
* @param key
* @param value
*/
public void setDataId(String key, String value){
redisTemplate.opsForValue().set(key, value);
}
/**
* 普通缓存保存
* @param key
* @param value
*/
public void setDataId(String key, String value, long timeout, TimeUnit timeUnit){
redisTemplate.opsForValue().set(key, value,timeout,timeUnit);
}
/**
* 追加计数
* @param key
* @param number
*/
public void addDataId(String key,long number){
redisTemplate.opsForValue().increment(key, number);
}
/**
* 如果为空就set值,并返回1
* 如果存在(不为空)不进行操作,并返回0
* @param key
* @param value
* @return
*/
public boolean setIfAbsent(String key, String value) {
return redisTemplate.opsForValue().setIfAbsent(key, value);
}
/**
* 删除key
* @param key
*/
public void deleteKey(String key){
if(redisTemplate.hasKey(key)){
redisTemplate.delete(key);
}
}
/**
* 保存list数据
* @param key
* @param values
*/
public void pushList(String key, List<String> values){
//插入数据
redisTemplate.opsForList().rightPushAll(key, values);
}
/**
* 取出并删除list数据
* @param key
* @return
*/
public List<String> getAndRemoveList(String key){
List<String> list = new ArrayList<>();
Long listSize = redisTemplate.opsForList().size(key);
if(listSize != null){
list = redisTemplate.opsForList().range(key, 0,listSize-1);
redisTemplate.opsForList().trim(key, listSize, -1);
}
return list;
}
/**
* 计数器
* @param key
* @param field
* @param number
*/
public void consumerStat(String key,String field,long number){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
String lastTime = (String)redisTemplate.opsForHash().get(key, "lastTime");
//logger.info("####################lastTime:{}",lastTime);
if(lastTime == null){
redisTemplate.opsForHash().put(key, "lastTime", sdf.format(new Date()));
redisTemplate.expire(key,1,TimeUnit.DAYS);
} else {
//redis记录中的日期
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(lastTime));
int lastDate = calendar.get(Calendar.DATE);
//当前日期
calendar.setTime(new Date());
int curDate = calendar.get(Calendar.DATE);
//每天重新计数
if(lastDate == curDate){
redisTemplate.opsForHash().put(key, "lastTime", sdf.format(new Date()));
}else {
redisTemplate.delete(key);
}
}
} catch (ParseException e) {
logger.error(e.getMessage());
}
redisTemplate.opsForHash().increment(key, field, number);
}
/**
* 获取map中所有实例
* @param key
* @return
*/
public Map getHashEntries(String key){
return redisTemplate.opsForHash().entries(key);
}
/**
* 设置失效时间
* @param key
* @param timeout
* @param timeUnit
*/
public void expire(String key, long timeout, TimeUnit timeUnit){
redisTemplate.expire(key,timeout,timeUnit);
}
/**
* 获取失效时间
* @param key
* @param timeUnit
* @return
*/
public Long getExpire(String key,TimeUnit timeUnit){
return redisTemplate.getExpire(key, timeUnit);
}
/**
* 获取keys集合
* @param pattern
* @return
*/
public Set<String> getKeys(String pattern){
return redisTemplate.keys(pattern);
}
}
Redis操作java工具类
最新推荐文章于 2022-05-06 18:13:42 发布