前臺的商品數據(圖片等加載緩慢)查詢,先從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 }
緩存同步:
數據添加,修改,刪除方法中設置清除緩存: