Ruby的memcache-client

Rails自带memcache-client,作为操作memcached缓存的客户端,然而最近我却在糗事百科的后台中发现大量的MemCacheError,我起初以为是memcached的问题,以保守参数重新编译了memcached,发现问题依旧。

最后通过替换成libmemcached才解决了这个问题(至今没有搞明白为什么)

并且在使用memcache-client的过程中发现了两个问题。

1. 如果通过Rails中的mem_cache_store来调用memcache-client,那么increment和decrement操作只能针对使用了:raw=>true参数的缓存才有效,因为mem_cache_store是默认将数据使用Marshal进行序列化的。
2. memcache-client支持get_multi,也就是向memcached一次请求多个key,但是其文档中明确说明,默认获取数据进行过Marshal的,raw数据就只能自己写multiget了。然而libmemcached可以直接通过get操作获取多个key,并且支持指定是否要序列化。

测试下来,我推荐最好使用Ruby的memcached这个gem来操作memcached,因为它这个gem是一个使用了libmemcached的C扩展,相对于纯ruby的memcache-client效率高出很多,而且功能更加强大,可以使用二进制协议和udp协议,能最大限度发挥memcached的效率。

要在Rails中使用libmemcached作为cache store,可以安装LibmemcacheStore 的Rails插件,然后指定以下配置,API符合Cache Store标准

config.cache_store = :libmemcached_store
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值