@Autowired
private StringRedisTemplate redisTemplate;
//存搜索记录
public void saveSearchRecord(String organCode, String userId, String deptCode) throws AppointmentException{
//将搜索记录存redis
String redisKey = organCode + userId;
//用ZSet格式存储,有序的去重集合
ZSetOperations<String, String> zSetOperations = redisTemplate.opsForZSet();
zSetOperations.add(redisKey, deptCode, System.currentTimeMillis());
Long size = zSetOperations.size(redisKey);
//仅保留最近5条
if (size > 5){
zSetOperations.removeRange(redisKey, 0, size - 5 - 1 );
}
//设置缓存时间一个月
redisTemplate.expire(redisKey, 30, TimeUnit.DAYS);
}
//取搜索记录
public List getRecentSearchList(String organCode, String userId) throws AppointmentException {
List<HospitalDeptVo> list = new ArrayList<>();
String key = organCode + userId;
ZSetOperations<String, String> zSetOperations = redisTemplate.opsForZSet();
//取出最近5条,按时间倒序排列
Set<ZSetOperations.TypedTuple<String>> range = zSetOperations.reverseRangeWithScores(key, 0, 5 - 1);
for (ZSetOperations.TypedTuple<String> tuple : range){
list.add(tuple.getValue());
}
return list;
}
redis实现历史搜索记录的存取
最新推荐文章于 2023-06-16 16:23:52 发布