Redis的坑

  • 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;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值