标签:style this sock ring utf-8 编码 信息 code support
缓存逻辑:set和get方法通过中间层SocketServer,由SocketServer去操作缓存(同步备用缓存等)
预热逻辑:在SocketServer里面打日志,通过日志去预热新缓存
出现问题:部分缓存预热失败-无法从原缓存里面读取信息
排查:
1.首先看写缓存的时候,是不是写进去了,发现确实是写进去了
2.看缓存日志,确实也打印正确
3.直接连接memcached,发现无法取出日志中打印的key,估计是一些特殊符号作了某种转译
4.从memcached查找,发现里面的特殊符号确实做了转译,例如@符号转换为%40,至此原因已排查,只要在预热的时候取缓存加上转译
5.查找原因,发现是通过MemcachedClient的时候,会对key进行URL编码
private String sanitizeKey(String key) throws UnsupportedEncodingException { return this.sanitizeKeys?URLEncoder.encode(key, "UTF-8"):key; }
标签:style this sock ring utf-8 编码 信息 code support
原文地址:http://www.cnblogs.com/lizo/p/6025887.html