memcache取值失败的问题

我是做APP后台接口开发的,有这样一样情况,客户端从cache里取值不稳定,有时候取得到有时候取不到,我在本地调用我的接口往memcache里面设值,telnet之后一直能访问到,就是远程调用的时候会出问题。而且远程调用取不到cahce里的值的时候,我telnet到memcache也get不到值,大神们是怎么回事啊,初次使用memcahce急死了。。。

阅读 6.5k
3 个回答

应该是内存满了

memcached会把内存分成许多个slab,比如100bytes,128bytes... 当你的value值绝大部分是120bytes时,就会导致128bytes使用空间不足,覆盖之前的key-value,但此时可能100bytes,140bytes等这些还是空的,也就是内存实际还有但依然会失效。

可以调节memcached 的 growth factor 参数试一试

很高兴回答楼主的问题!

首先你需要明确一点,取不到数据,先看看数据在不在memcache中,你可以使用memadmin这个工具进行查看memcache中的数据,当然了也可以进行编辑,工具比较简单,这里就不说怎么使用了。

使用memcache工具,当你的键值是失效而取不到时,它会提示键值已经失效,过期。

而且远程调用取不到cahce里的值的时候,我telnet到memcache也get不到值

  1. 请确认远程调用取cache值的代码的正确性,确认代码没有删除memcache中的数据;
  2. 或者,请先telnet取值,然后再远程访问cache,这样试一下。

当然了,由于不知道实际的代码逻辑,所以我也无法确认实际的问题,只能简单的说出一些方法,希望我的方法对你有帮助。

最后,如果你解决了问题,希望你能把问题的答案再分享出来喽。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进