为什么通过telnet向memcached存入一个key之后用memcachedclient取出来的是null?

JerryYux 发布于 2014/07/30 16:48
阅读 2K+
收藏 0

在java代码里set(key,value)之后再取就没有问题,但是通过telnet向缓存中存之后只能通过telnet取,用java代码就取不到


调用client.keyExists(key)可以得到true,但是调用get(key)之后得到的就是null,调用client.getMultiAray(key)可以得到一个length==1的数组,但是第一个元素也是null 

client可以把key和value删除,但是不能取出来

加载中
0
sxgkwei
sxgkwei

我没有用过你说的这个缓存,但所有的缓存,既然要叫缓存,那么存储在其中的数据必定时有失效时间的。

我从你提供的存和取的方法上,都没有看到这个时间的设置,貌似是不合理的。

1,存的时候设入有效时长参数,那么内部机制在你去取的时候,就会计算现在要不要返回你数据。

2,取的时候设入过期时长参数,内部机制也会和存入这个数据时的时间做比,看加上时长,够不够到现在,然后确定要不要返回给你数据。

总之,反正是有时长参数的吧?

sxgkwei
sxgkwei
回复 @JerryYux : 你还是别set0了,设置个正常点的时间量来试试看。还有,key没有作死的用中文吧?
JerryYux
JerryYux
我set的时候设置的是0,就是一直也不过期
0
南湖船老大
南湖船老大

你说的这种情况没遇到。

不过jredis有一个现象和这个很像,就是通过jredis的set方法的键值都是转成了unicode编码,然后在客户端就取不出来,用jredis的get是可以取出来的

0
RegnoiX
RegnoiX
过期了吧
0
cbcye
cbcye
有些框架会把key转为哈希值存储,看一下key是否被转换了,比如yii框架会md5之后存储key
返回顶部
顶部