4
回答
为什么通过telnet向memcached存入一个key之后用memcachedclient取出来的是null?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

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


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

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

举报
JerryYux
发帖于3年前 4回/2K+阅
共有4个答案 最后回答: 1年前

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

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

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

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

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

--- 共有 2 条评论 ---
sxgkwei回复 @JerryYux : 你还是别set0了,设置个正常点的时间量来试试看。还有,key没有作死的用中文吧? 3年前 回复
JerryYux我set的时候设置的是0,就是一直也不过期 3年前 回复

你说的这种情况没遇到。

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

顶部