前台的商品数据(图片等加载缓慢)查询,先从redis缓存查询数据。

redis是一个nosql数据库,内存版数据库,读取速度11w/s。本身具有内存淘汰机制,是单线程服务器(分时操作系统),线程安全。

linux中redis安装(单机版):make;redis集群配置,spring整合jedis,缓存同步;

修改为后台启动vim redis.conf; redis集群配置,spring整合jedis,缓存同步;(单机redis配置密码验证,修改参数 requirepass 密码;后台启动 ./redis.server  ../redis.conf;带密码登录 ./redis.cli -a password)

查看进程redis集群配置,spring整合jedis,缓存同步


虚拟机模拟redis集群的搭建:

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

搭建步骤:

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

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

redis集群配置,spring整合jedis,缓存同步vim redis.conf,redis集群配置,spring整合jedis,缓存同步

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

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

登录集群:

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

查看节点信息:

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

主机用于写入,从机用作备份;

 存入的数据经过CRC算法指定hash槽,指向磁盘空间位置;

添加redis单机到集群:

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

添加的都会是master;

重新分配存储空间:

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

添加从节点:

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

再给7008分配空间即可;


  redis集群融入到业务中:

导包redis集群配置,spring整合jedis,缓存同步

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

存储到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的方法进行缓存的操作;

获取数据后,添加缓存:

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

在获取数据库数据前,先从缓存中获取:

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         }

缓存同步:

数据添加,修改,删除方法中设置清除缓存:

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