- 1、当key已存在时,后调用自增inr(),set(),getset()等方法,会清空缓存有效期,必须重新设置一次缓存有效期
// 如果用INCR ,DEL,SET,GETSET会将kev对应存储的值替换成新的, 命令也会清掉超时时间!
redisService.incr(key);
redisService.expire(key, 60L);
- 2、生产环境,谨慎使用keys命令,此命令会扫描内存中的全部key,且redis是单线程的,极端情况下会导致整个redis集群hang住,可用SCAN命令替代
redisService.listKeys(key);
redisService.keys(key);
redisService.listPattern(key + "*");
- 3、for()循环调用redis操作,性能低,可以考虑改为pipeline方式
/**
* pipeline方式批量执行 哈希获取所有键值对
*/
public List<Object> batchHmGetMap(List<String> keys) {
List<Object> exeResult = redisTemplate.executePipelined(new SessionCallback<String>() {
@Override
public String execute(RedisOperations operations) throws DataAccessException {
ListOperations<String, Object> list = redisTemplate.opsForList();
for (String key : keys) {
list.range(key, 0, -1);
}
return null;
}
});
return exeResult;
}