posts - 495,comments - 227,trackbacks - 0
          <2013年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          242526272812
          3456789

          常用鏈接

          留言簿(46)

          隨筆分類(476)

          隨筆檔案(495)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1395409
          • 排名 - 16

          最新評論

          閱讀排行榜

          評論排行榜

          http://www.aygfsteel.com/AllanZ/archive/2013/02/22/cache-hazelcast.html

          做去皮兒網(http://www.qupier.com),內容管理是一個 系統,前端網站是一個系統,這兩個系統之間獨立部署,但是緩存要能夠互通。例如后臺修改了某個消息類型的說明,在前段網站上要能夠展現出來(使用了 hibernate的查詢緩存)。其他的一些場景也許要緩存,例如網站的shiro權限信息緩存,不過這個不需要和后端系統互通。但是既然開搞,也不好意 思再掛著ehcache。于是一并升級。

          前面一篇日志各種碰壁后,終于找到了理論上能夠實現功能的兩個產品:gemfire和hazelcast。于是,開始嘗試。

          首先是gemfire,有locator等概念。官方也看到了gemfire-hibernate模塊。但是很奇怪,各種配置各種報錯。

          然后前面一篇日志的評論里面網友@吳勇智提到了hazelcast。所以也來試試。結果出奇的順利。記錄一下過程。

          1.下載、運行hazelcast

          下載后隨便解壓,其實直接執行bin/server.bat即可。但是為了能夠眼見為實,于是首先把包中的mancenter.war找了個tomcat部署起來,然后修改bin/hazelcast.xml,把
          management-center打開。并指向剛部署的mancenter訪問路徑。然后再啟動hazelcast服務:bin/server.bat。

          2.hibernate二級緩存和查詢緩存

          我用spring結合hibernate使用,但是沒有用jpa。最后配置如下:

           1 <bean id="sessionFactory"
           2         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
           3         <property name="dataSource">
           4             <ref bean="dataSource" />
           5         </property>
           6         <property name="packagesToScan">
           7             <list>
           8                 <value>com.my.**.model</value>
           9             </list>
          10         </property>
          11         <property name="hibernateProperties">
          12             <props>
          13                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>
          14                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
          15                 <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
          16                 <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
          17                 <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
          18                 <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
          19                 <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
          20                 <prop key="hibernate.validator.autoregister_listeners">${hibernate.validator.autoregister_listeners}</prop>
          21                 <prop key="hibernate.validator.apply_to_ddl">${hibernate.validator.apply_to_ddl}</prop>
          22                 <prop key="javax.persistence.validation.mode">${javax.persistence.validation.mode}</prop>
          23         
          24                 <prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop>
          25                 <prop key="hibernate.cache.use_minimal_puts">${hibernate.cache.use_minimal_puts}</prop>
          26                 <prop key="hibernate.cache.hazelcast.use_native_client">${hibernate.cache.hazelcast.use_native_client}</prop>
          27                 <prop key="hibernate.cache.hazelcast.native_client_address">${hibernate.cache.hazelcast.native_client_address}</prop>
          28                 <prop key="hibernate.cache.hazelcast.native_client_group">${hibernate.cache.hazelcast.native_client_group}</prop>
          29                 <prop key="hibernate.cache.hazelcast.native_client_password">${hibernate.cache.hazelcast.native_client_password}</prop>
          30             </props>
          31         </property>
          32     </bean>

          然后是properties配置文件:

           1 hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
           2 hibernate.show_sql=true
           3 hibernate.jdbc.fetch_size=25
           4 hibernate.jdbc.batch_size=30
           5 hibernate.hbm2ddl.auto=update
           6 hibernate.cache.region.factory_class=com.hazelcast.hibernate.HazelcastCacheRegionFactory
           7 hibernate.cache.use_query_cache=true
           8 hibernate.cache.use_second_level_cache=true
           9 
          10 hibernate.validator.autoregister_listeners=false
          11 hibernate.validator.apply_to_ddl=false
          12 javax.persistence.validation.mode=none
          13 
          14 hibernate.cache.use_minimal_puts=true
          15 hibernate.cache.hazelcast.use_native_client=true
          16 hibernate.cache.hazelcast.native_client_address=localhost
          17 hibernate.cache.hazelcast.native_client_group=dev
          18 hibernate.cache.hazelcast.native_client_password=dev-pass

          然后就OK了。

          另外封裝了一個可以直接使用的cache。內部調用hazelcast。不同的cache region就簡單的使用了hazelcast的map。

          折騰了幾天,總算告一段落。
          posted on 2013-02-22 17:43 SIMONE 閱讀(2893) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 高邑县| 萝北县| 铜梁县| 蓬莱市| 佳木斯市| 石泉县| 绍兴市| 全州县| 黄龙县| 尼玛县| 辛集市| 交城县| 明光市| 南康市| 东阿县| 顺昌县| 仙游县| 衢州市| 鄂温| 盐亭县| 巴东县| 乐清市| 秦安县| 舞阳县| 喀喇沁旗| 合山市| 克什克腾旗| 富宁县| 婺源县| 理塘县| 棋牌| 揭阳市| 吴旗县| 黔东| 沛县| 綦江县| 花垣县| 福泉市| 镇远县| 玉溪市| 嘉鱼县|