这几天团队项目里遇到一个Redis的srem删除缓存失败的问题,cacheName和cacheKey跟sadd的时候一毛一样,但是就是调用srem的时候,删除不掉,一脸懵x!
索性,Debug找问题最靠谱,发现是在使用的时候,没有保持一致的调用方式造成的。
那么,什么叫保持一致的调用方式呢?
1、先来看scard和sadd
使用的是Redis.call 拿到jedis去直接调用的jedis的命令。
2、再看srem的调用
调用的是JFinal封装jedis的srem,而不是直接调用的jedis的srem
3、啥区别呢?
区别就是jedis的sadd 存的时候用的key和value都是String字符串存的
但是srem的时候jfinal封装的调用是转了byte[] key都转bytes了 肯定是找不到这个缓存数据了,当然删除也是失败的。
4、换成这种
换成上图这种调用方式,与scard sadd存的时候 key value保持一致,就可以了。
JFinal学院,用心服务JFinal开发者,如果您有所受益,请不吝点赞!
原价199元年费,现在免费开放了!