当memcached的key为url时

memcached的客户端最著名的是这2个:memcached client for java和spymemcached。前者,使用最广泛。稳定性比较好。后者存取速度会高于前者,但是稳定性不好。我采用了前者。

 

但有一天,我需要将url作为key存入memcached,却怎么也存不进去。而直接用memcached命令set,是可以存进去的。看来是memcached client for java不支持吗?

 

网上找了找资料,查到一个叫做“xmemcached”的。号称性能比前2个还要厉害。我下载了试了试,版本号是xmemcached-1.2.4。它里面有一个选项sanitizeKeys,当选择用URL当key的时候,MemcachedClient会自动将URL encode再存储。于是我设置成

memcachedClient.setSanitizeKeys(true); 同时配合另一个选项:commandFactory ,设置成net.rubyeye.xmemcached.command.TextCommandFactory。成功了!可以设置url为key了。

 

但是存入到memcached的内容出现了乱码。郁闷了。

于是再试:

注释掉这句memcachedClient.setSanitizeKeys(true);

将commandFactory 设置成net.rubyeye.xmemcached.command.BinaryCommandFactory。即采用二进制协议。成功存入到memcached,但内容还是乱码。

无语。

无意中,又翻了翻memcached client for java。找了一下源代码,发现它也有一个选项sanitizeKeys。原来它的默认值是true。意思是比如key为“/abc”,那么要用get('%2Fabc'),才能得到value。

哈哈。原来如此!!

然后我设置setSanitizeKeys(false)。set一个key为"/abc",get('/abc')得到了value!而且没有乱码。

不过,也许是我摸得不太熟。xmemcached是个好东西。下次好好研究。只不过担心它不稳定(吃螃蟹要付出代价啊)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值