memcache key中的特殊字符(坑)

由于生产环境的并发量很高,所有数据不能全部从数据库中查找,一部分数据肯定是需要放到缓存中(memcached\redis),如果数据更改为了保证数据一致性肯定是需要更新缓存的,这个时候如果没有足够晚上的功能就需要手动找到缓存的key删除缓存,就在这个时候遇到了一个key的问题

在程序中找到的key是这个样子的

data_XXXXXXXXXCache_getXXXXXXXXXKey_4161761:3:35008:

连接服务器并删除key

竟然没有删掉,很想知道原因memcache又没有类似于redis keys的命令,只能通过下面的命令慢慢找到key

stats items //列出所有keys
stats cachedump 10 0 //通过itemid获取key

找的时候发现了这样一条key

":"经过URL-encode是%3A,终于找到原因了,接下来可以删除这个key了,然后并没有那么简单

无论是删除key还是getkey都不行,看来只能完善程序的方法删除key了

这个时候想到2个问题

  • redis中这样有问题吗?

尝试了一下key中有":"是没有问题

  • java 命名规范是不是跟这个有关系

想到一条java命名规范 java语言的标识符由字母\数字\下划线和美元符号组成,第一个字符不能为数字.

看来以后起名字不要随便乱起,避免关键时候踩坑

 

参考资料 http://www.ttlsa.com/memcache/memcache-list-all-keys/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值