zoukankan      html  css  js  c++  java
  • 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         }

    缓存同步:

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

  • 相关阅读:
    SQL Azure (17) SQL Azure V12
    Microsoft Azure News(5) Azure新DV2系列虚拟机上线
    Azure Redis Cache (3) 在Windows 环境下使用Redis Benchmark
    Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)
    Windows Azure Virtual Machine (31) 迁移Azure虚拟机
    Windows Azure Web Site (16) Azure Web Site HTTPS
    Azure China (12) 域名备案问题
    一分钟快速入门openstack
    管理员必备的Linux系统监控工具
    Keepalived+Nginx实现高可用和双主节点负载均衡
  • 原文地址:https://www.cnblogs.com/mryangbo/p/8045320.html
Copyright © 2011-2022 走看看