java web開發緩存方案,ehcache和redis各有優劣勢,對比如下:
1、適合使用ehcache的場景:
選用Ehcache作為數據存儲服務器,Ehcache也是基於內存存儲,支持定時持久化功能,非常適合存儲像計數器這種小數據類型。處理Http請求使用Tomcat容器,結構圖如下:
實現原理:處理邏輯采用壹個servlet實現,並且在這個servlet中通過壹致性Hash從Ehcache中獲取計數器值。
2、高並發並且對實時性要求高的場合下使用redis
redis
redis是在memcache之後編寫的,大家經常把這兩者做比較,如果說它是個key-value store 的話但是它具有豐富的數據類型,我想暫時把它叫做緩存數據流中心,就像現在物流中心那樣,order、package、store、classification、distribute、end。現在還很流行的LAMP PHP架構 不知道和?redis+mysql 或者?redis?+ mongodb的性能比較(聽群裏的人說mongodb分片不穩定)。先說說reidis的特性
1. 支持持久化
?redis的本地持久化支持兩種方式:RDB和AOF。RDB 在redis.conf配置文件裏配置持久化觸發器,AOF指的是redis沒增加壹條記錄都會保存到持久化文件中(保存的是這條記錄的生成命令),如果不是用redis做DB用的話還會不要開AOF ,數據太龐大了,重啟恢復的時候非常麻煩。
2.豐富的數據類型
redis?支持 String 、Lists、sets、sorted sets、hashes 多種數據類型,新浪微博會使用redis做nosql主要也是它具有這些類型,時間排序、職能排序、我的微博、發給我的這些功能List?和?sorted set 的強大操作功能息息相關。
3.高性能
這點跟memcache很想象,內存操作的級別是毫秒級的比硬盤操作秒級操作自然高效不少,較少了磁頭尋道、數據讀取、頁面交換這些高開銷的操作!這也是NOSQL冒出來的原因吧,應該是高性能
是基於RDBMS的衍生產品,雖然RDBMS也具有緩存結構,但是始終在app層面不是我們想要的那麽操控的。4.replication
redis提供主從復制方案,跟mysql壹樣增量復制而且復制的實現都很相似,這個復制跟AOF有點類似復制的是新增記錄命令,主庫新增記錄將新增腳本發送給從庫,從庫根據腳本生成記錄,這個過程非常快,就看網絡了,壹般主從都是在同壹個局域網,所以可以說redis的主從近似及時同步,同事它還支持壹主多從,動態添加從庫,從庫數量沒有限制。 主從庫搭建,我覺得還是采用網狀模式,如果使用鏈式(master-slave-slave-slave-slave·····)如果第壹個slave出現宕機重啟,首先從master 接收 數據恢復腳本,這個是阻塞的,如果主庫數據幾TB的情況恢復過程得花上壹段時間,在這個過程中其他的slave就無法和主庫同步了。
5.更新快
這點好像從我接觸到redis到目前為止 已經發了大版本就4個,小版本沒算過。redis作者是個非常積極的人,無論是郵件提問還是論壇發帖,他都能及時耐心的為妳解答,維護度很高。有人維護的話,讓我們用的也省心和放心。目前作者對redis?的主導開發方向是redis的集群方向。