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

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

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

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

修改成後臺啓動vim redis.conf; ;(單機redis配置密碼驗證,修改參數 requirepass 密碼;後臺啓動 ./redis.server  ../redis.conf;帶密碼登陸 ./redis.cli -a password)算法

查看進程spring


虛擬機模擬redis集羣的搭建:sql

 

搭建步驟:數據庫

vim redis.conf,json

複製7001,依次修改其餘的端口;vim

登陸集羣:緩存

查看節點信息:

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

 存入的數據通過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         }

緩存同步:

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

相關文章
相關標籤/搜索