redis集群配置,spring整合jedis,緩存同步


前台的商品數據(圖片等加載緩慢)查詢,先從redis緩存查詢數據。

redis是一個nosql數據庫,內存版數據庫,讀取速度11w/s。本身具有內存淘汰機制,是單線程服務器(分時操作系統),線程安全。

linux中redis安裝(單機版):make;;

修改為后台啟動vim redis.conf; ;(單機redis配置密碼驗證,修改參數 requirepass 密碼;后台啟動 ./redis.server  ../redis.conf;帶密碼登錄 ./redis.cli -a password)

查看進程


虛擬機模擬redis集群的搭建:

 

搭建步驟:

vim redis.conf,

復制7001,依次修改其他的端口;

登錄集群:

查看節點信息:

主機用於寫入,從機用作備份;

 存入的數據經過CRC算法指定hash槽,指向磁盤空間位置;

添加redis單機到集群:

添加的都會是master;

重新分配存儲空間:

 ./redis-trib.rb reshard 192.168.74.132:7001   表示重新分配7001所在的集群(注意)

添加從節點:

再給7008分配空間即可;


  redis集群融入到業務中:

導包

存儲到redis集群中的數據,會隨機分配到其中一個redis中;

 spring整合jedis:

 1 <!-- redis連接池 -->
 2     <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
 3         <property name="maxTotal" value="2000"></property>
 4         <property name="maxIdle" value="20"></property>
 5     </bean>
 6     <!-- 創建集群對象 -->
 7     <bean class="redis.clients.jedis.JedisCluster">
 8         <constructor-arg name="nodes">
 9             <set>
10                 <bean class="redis.clients.jedis.HostAndPort">
11                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
12                     <constructor-arg name="port" value="7001"></constructor-arg>
13                 </bean>
14                 
15                 <bean class="redis.clients.jedis.HostAndPort">
16                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
17                     <constructor-arg name="port" value="7002"></constructor-arg>
18                 </bean>
19                 
20                 <bean class="redis.clients.jedis.HostAndPort">
21                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
22                     <constructor-arg name="port" value="7003"></constructor-arg>
23                 </bean>
24                 
25                 <bean class="redis.clients.jedis.HostAndPort">
26                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
27                     <constructor-arg name="port" value="7004"></constructor-arg>
28                 </bean>
29                 
30                 <bean class="redis.clients.jedis.HostAndPort">
31                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
32                     <constructor-arg name="port" value="7005"></constructor-arg>
33                 </bean>
34                 
35                 <bean class="redis.clients.jedis.HostAndPort">
36                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
37                     <constructor-arg name="port" value="7006"></constructor-arg>
38                 </bean>
39                 
40                 <bean class="redis.clients.jedis.HostAndPort">
41                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
42                     <constructor-arg name="port" value="7007"></constructor-arg>
43                 </bean>
44                 
45                 <bean class="redis.clients.jedis.HostAndPort">
46                     <constructor-arg name="host" value="192.168.66.66"></constructor-arg>
47                     <constructor-arg name="port" value="7008"></constructor-arg>
48                 </bean>
49             </set>
50         </constructor-arg>
51         <constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>
52     </bean>

通過JedisCluster的方法進行緩存的操作;

獲取數據后,添加緩存:

在獲取數據庫數據前,先從緩存中獲取:

1 try {
2             String adJson = jedisDao.hget(INDEX_CACHE, categoryId+"");
3             if(StringUtils.isNotBlank(adJson)){
4                 List<AdItem> adList = JsonUtils.jsonToList(adJson, AdItem.class);
5                 return adList;
6             }
7         } catch (Exception e) {
8             e.printStackTrace();
9         }

緩存同步:

數據添加,修改,刪除方法中設置清除緩存:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM