yuyee

          緩存的基本特性

          緩存基本特性:
          1.時(shí)間記錄,進(jìn)入Cache的時(shí)間
          2.timeout過期時(shí)間,cache里面數(shù)據(jù)多久過期
          3.eviction policy 清楚策略,最不經(jīng)常訪問的數(shù)據(jù),最久沒訪問到的數(shù)據(jù)
          4.命中率:Cache的數(shù)據(jù)被選中的比率
          5.分級(jí)Cache,支持 Region分級(jí),比如ehcache
          6.分布式,分布在不同的計(jì)算機(jī)上
          7.鎖,事務(wù),數(shù)據(jù)同步

          各個(gè)Cluster之間的Cache同步有多種實(shí)現(xiàn)方法。比如JMS,RMI 
          Cache中一般有g(shù)et,put,remove,clear
          對(duì)于Cluster的Cache來說,讀(get)肯定是local的,只需要從本地內(nèi)存中獲取,而Remove/clear,需要和其他計(jì)算機(jī)同步,put可以是local的,因?yàn)槿绻x不到,可以從數(shù)據(jù)庫(kù)中讀
          remote put:一臺(tái)計(jì)算機(jī)把數(shù)據(jù)放到自己的Cache中,這個(gè)數(shù)據(jù)需要傳播到Cluster其他計(jì)算機(jī)上,這樣其他Cluster可以同步,但是如果數(shù)據(jù)大,傳播的代價(jià)就大了
          local put:只放到本地計(jì)算機(jī)的Cache里,不需要同步到其他Cluster,從Cache得不到的數(shù)據(jù)可以在數(shù)據(jù)庫(kù)里讀取


          過期數(shù)據(jù):在hibernate等orm工具中,有一個(gè)原則,就是不要把沒有commit的數(shù)據(jù)放到緩存中,防止臟讀,而且remove之后必須通知其他Cluster,保證大部分時(shí)間內(nèi),給用戶的數(shù)據(jù)不是過期的數(shù)據(jù)
          ORM Cache中,一般分2種Cache,一種是類緩存,一種是查詢緩存,類緩存是以ID對(duì)應(yīng)Entity對(duì)象,而查詢緩存是用來存放一條查詢語句對(duì)應(yīng)的結(jié)果集,然后再到類緩存里找響應(yīng)的實(shí)體。
          類緩存:一類Entity一個(gè)Region
          查詢緩存:hibernate在一個(gè)地方維護(hù)每個(gè)表的最后更新時(shí)間,其實(shí)也就是放在上面org.hibernate.cache. UpdateTimestampsCache所指定的緩存配置里面,當(dāng)通過hibernate更新的時(shí)候,hibernate會(huì)知道這次更新影響了哪些表。然后它更新這些表的最后更新時(shí)間。每個(gè)緩存都有一個(gè)生成時(shí)間和這個(gè)緩存所查詢的表,當(dāng)hibernate查詢一個(gè)緩存是否存在的時(shí)候,如果緩存存在,它還要取出緩存的生成時(shí)間和這個(gè)緩存所查詢的表,然后去查找這些表的最后更新時(shí)間,如果有一個(gè)表在生成時(shí)間后更新過了,那么這個(gè)緩存是無效的。 可以看出,只要更新過一個(gè)表,那么凡是涉及到這個(gè)表的查詢緩存就失效了,因此查詢緩存的命中率可能會(huì)比較低。

          7

          posted on 2010-11-02 16:30 羔羊 閱讀(189) 評(píng)論(0)  編輯  收藏 所屬分類: 緩存

          主站蜘蛛池模板: 临猗县| 嵊泗县| 田林县| 九江县| 凉城县| 朔州市| 三亚市| 南陵县| 隆子县| 斗六市| 库伦旗| 景谷| 托克托县| 平阳县| 韶山市| 登封市| 长丰县| 乌兰浩特市| 仁怀市| 天等县| 元阳县| 蓬莱市| 鄱阳县| 临猗县| 府谷县| 望城县| 洪江市| 尚义县| 南雄市| 清河县| 南澳县| 博客| 沅江市| 读书| 宁德市| 彝良县| 兴城市| 襄城县| 靖远县| 杨浦区| 三明市|