xmemcached 1.3.4 正式發布
Xmemcached是基于java nio實現的高性能可擴展的memcached客戶端。
實際上是基于我實現的一個nio框架Yan4j的基礎上實現的(目前是基于yanf4j 0.61-snapshot),序列化機制使用spymemcached的Transcoder并做了部分改造。
項目地址:http://code.google.com/p/xmemcached/
xmemcached發布1.3.4版本,主要改進如下:
1、修復一個相對嚴重的bug,在解析二進制協議時如果遇到從服務端返回的錯誤信息,會導致連接異常斷開;如果你沒有使用binary協議,不會遇到此問題。建議使用xmemcached并且使用二進制協議的朋友升級到此版本。
2、允許XMemcachedClientFactoryBean配置opTimeout選項。
3、添加RoundRobinMemcachedSessionLocator,輪詢的連接選擇器,僅用于kestrel或者memcacheq集群,這些應用都不要求同一個key要保存在固定的服務器上,而僅是作為集群分擔負載。
4、KetamaMemcachedSessionLocator添加額外選項,允許配置是否兼容 nginx-upstream-consistent,這個是網友 wolfg1969貢獻的patch。如果要使得xmc的一致性哈希算法兼容nginx-upstream-consistent,只要設置 cwNginxUpstreamConsistent為true即可,示范代碼:
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(servers));
builder.setSessionLocator(new KetamaMemcachedSessionLocator(true));
5、修復bug,包括issue 132 , issue 142 , issue 133 , issue 139 , issue 142 , issue 145 ,issue 150等。
memcached是一套分布式的快取系統,當初是Danga Interactive為了LiveJournal所發展的,但目前被許多軟件(如MediaWiki)所使用。這是一套開放源代碼軟件,以BSD license授權釋出。
memcached缺乏認證以及安全管制,這代表應該將memcached服務器放置在防火墻后。
memcached的API使用三十二位元的循環冗余校驗(CRC-32)計算鍵值后,將資料分散在不同的機器上。當表格滿了以后,接下來新增的資料會以LRU機制替換掉。由于memcached通常只是當作快取系統使用,所以使用memcached的應用程式在寫回較慢的系統時(像是后端的數據庫)需要額外的程式碼更新memcached內的資料。
memcached具有多種語言的客戶端開發包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/