日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

基于Redis分布式緩存實現(xiàn)

 nacy2012 2017-03-28

簡單說明下,寫此文章算是對自己近一段工作的總結(jié),希望能對你有點幫助,同時也是自己的一點小積累。

一.為什么選擇redis

在項目中使用redis做為緩存,還沒有使用memcache,考慮因素主要有兩點:

1.redis豐富的數(shù)據(jù)結(jié)構(gòu),其hash,list,set以及功能豐富的String的支持,對于實際項目中的使用有很大的幫忙。(可參考官網(wǎng)redis.io)

2.redis單點的性能也非常高效(利用項目中的數(shù)據(jù)測試優(yōu)于memcache).

基于以上考慮,因此選用了redis來做為緩存應(yīng)用。

二.分布式緩存的架構(gòu)設(shè)計

1.架構(gòu)設(shè)計

由于redis是單點,項目中需要使用,必須自己實現(xiàn)分布式?;炯軜?gòu)圖如下所示:

Redis

2.分布式實現(xiàn)

通過key做一致性哈希,實現(xiàn)key對應(yīng)redis結(jié)點的分布。

一致性哈希的實現(xiàn):

hash值計算:通過支持MD5與MurmurHash兩種計算方式,默認是采用MurmurHash,高效的hash計算。

一致性的實現(xiàn):通過java的TreeMap來模擬環(huán)狀結(jié)構(gòu),實現(xiàn)均勻分布

3.client的選擇

對于jedis修改的主要是分區(qū)模塊的修改,使其支持了跟據(jù)BufferKey進行分區(qū),跟據(jù)不同的redis結(jié)點信息,可以初始化不同的ShardInfo,同時也修改了JedisPool的底層實現(xiàn),使其連接pool池支持跟據(jù)key,value的構(gòu)造方法,跟據(jù)不同ShardInfos,創(chuàng)建不同的jedis連接客戶端,達到分區(qū)的效果,供應(yīng)用層調(diào)用

4.模塊的說明

臟數(shù)據(jù)處理模塊,處理失敗執(zhí)行的緩存操作。

屏蔽監(jiān)控模塊,對于jedis操作的異常監(jiān)控,當(dāng)某結(jié)點出現(xiàn)異??煽刂苧edis結(jié)點的切除等操作。

整個分布式模塊通過hornetq,來切除異常redis結(jié)點。對于新結(jié)點的增加,也可以通過reload方法實現(xiàn)增加。(此模塊對于新增結(jié)點也可以很方便實現(xiàn))

對于以上分布式架構(gòu)的實現(xiàn)滿足了項目的需求。另外使用中對于一些比較重要用途的緩存數(shù)據(jù)可以單獨設(shè)置一些redis結(jié)點,設(shè)定特定的優(yōu)先級。另外對于緩存接口的設(shè)計,也可以跟據(jù)需求,實現(xiàn)基本接口與一些特殊邏輯接口。對于cas相關(guān)操作,以及一些事物操作可以通過其watch機制來實現(xiàn)。(參考 redis事物介紹 http://www./Linux/2012-11/74362.htm

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多