memcached 不同客户端存取值问题

本人接触memcached不多,希望下面的问题能帮助到遇到同样问题的同学,作为个人日记记录一下。
昨天调试memcached发现,在手机端存进去的值,java端没取到。

一般我们只关注 key 和 value ,发现并无问题;然后好好看了下 flags。

查源码发现
 cmd = cmdname + " " + key + " " + flags + " " + expiry.getTime() / 1000L + " ";


flags = NativeHandler.getMarkerFlag(value);


继续看源码:
public static final int getMarkerFlag(Object value)
{
if(value instanceof Byte)
return 1;
if(value instanceof Boolean)
return 8192;
if(value instanceof Integer)
return 4;
if(value instanceof Long)
return 16384;
if(value instanceof Character)
return 16;
if(value instanceof String)
return 32;
if(value instanceof StringBuffer)
return 64;
if(value instanceof Float)
return 128;
if(value instanceof Short)
return 256;
if(value instanceof Double)
return 512;
if(value instanceof Date)
return 1024;
if(value instanceof StringBuilder)
return 2048;
return !(value instanceof byte[]) ? 0 : 4096;
}

终于明白了,java string 类型存储默认flags=32。
修正set flags再测试,问题解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值