Spring-Redis 集群环境搭建

前言

     首先了解一下redis目录下的文件,如下图:

    1.redis.conf是Redis启动时的需要用到的配置。启动Redis的过程如下:
  src/redis-server redis.conf
  即可成功执行。
  2.sentinel.conf是Redis的哨兵配置,启动哨兵的过程如下:
  src/redis-sentinel sentinel.conf
  注:以上命令使用root权限执行,在图中所示的路径下(即redis根目录,实际上redis-server、redis-cli、redis-sentinel等命令在src下,保持命令和配置文件的路径都正确即可)打开终端执行命令。

一、Sentinel模式

1. Linux Sentinel搭建

   1.1 配置redis.conf

   redis.config中把配置划分的很清楚,每部分用下面的方式划分开,如下图示例: 

  第一步:找到NETWORK选项,将下图中的bind注释掉 。目的:防止远端IP无法访问。
  
  第二步:还是NETWORK部分,找到protected-mode部分,将yes改为no。目的:防止保护模式开启造成的远端IP无法访问的问题。
  Spring-Redis 集群环境搭建_第1张图片
  第三步(可选):在 APPEND ONLY MODE下,把appendonly 设置为 yes。目的:使用redis的AOF快照方式进行持久化。   
 
 说明:redis中的其他配置,自选进行配置,配置在配置文件的各部分中都有详细的英文说明。
 1.2 配置sentinel.conf
 第一步:将protected-mode设置为no,如下图。目的:防止保护模式开启造成的远端IP无法获得sentinel的问题。
  Spring-Redis 集群环境搭建_第2张图片
  第二步:配置监控的对象。找到sentinel monitor ...部分,如下图。设置被监控的主库IP, 端口号,主库挂掉时,哨兵同意进行恢复的数量。其中“ mymaster”为自定义的主库名,redis默认定义为mymaster。如果想改成别的名字,记得在配置中把其他使用了mymsater的位置一并修改。
 
 1.3 配置从库的redis.config
 在1.1的基础上,只需要在REPLICATION部分,找到下图位置,设置要跟随的主库的IP地址和端口即可。
  Spring-Redis 集群环境搭建_第3张图片
  注意:这里要写主库的实际IP地址,不要写127.0.0.1这个本地测试地址。在后续的java使用中,会出现问题:redis数据存储在了java程序运行位置的机器上。具体原因:没有深究。

2.Spring 和 Redis Sentinel整合

  这里的过程参考了,感谢原作者的付出  http://blog.csdn.net/qq_34021712/article/details/75949706
项目demo放在了GitHub上,地址:https://github.com/BigOrange1994/SpringBootLearn.git
  大致过程说明:
   2.1 配置spring-redis.xml
  第一步:配置JedisConnectionFactory,用于建立连接 
  第二步:配置JedisPoolConfig ,以后从这个池子里拿连接
  第三步:配置RedisSentinelConfiguration,用于设置sentinel相关
  第四步:配置RedisTemplate ,Spring提供的高抽象级别的、具有更高交互性的redis操作模板
   2.2  由于项目使用了Spring Boot而不是 http://blog.csdn.net/qq_34021712/article/details/75949706这篇教程中说的Spring MVC ,所以使用了如下类增加Spring Boot对xml的支持。(也可以使用Spring Boot中相关的注解代替xml,由于我本身刚深入学习,暂时没去寻找相关注解和类)
  2.3 使用RedisTemplate完成RedisUtil工具类。
  2.4 项目结构。  
  Spring-Redis 集群环境搭建_第4张图片
   2.5 运行结果
  如果在启动时,看到如下的配置,说明你的配置都没有问题了,可以用自定义的RedisUtil中的方法测试。
Spring-Redis 集群环境搭建_第5张图片
 运行结果:  

二、Cluster模式

1. Linux Redis Cluster搭建

    Cluster模式至少需要“三主三从”(即:三个主库三个从库),方可搭建集群。开启6个redis实例即可。每个实例只需要配置redis即可。不需要指定谁是主库谁是从库。在之后的步骤里,会进行说明。
   1.1 配置redis.conf
    在第一部分Sentinel模式的1.1的基础上,只需要在REDIS CLUSTER部分,找到下图位置,设置集群模式为yes即可。
Spring-Redis 集群环境搭建_第6张图片
 1.2 设置redis的端口号(可选, 如果6个redis实例的IP相同,则需要配置不同的端口号)
  在NETWORK 部分,找到下图位置,设置端口号即可。

  1.3 借助redis.trib.rb完成集群初始化
 在linux 终端下,使用下图红框命令,安装辅助工具。
Spring-Redis 集群环境搭建_第7张图片
 安装完成后,使用命令:
 src/redis-trib.rb create --replicas 1 192.168.92.128:6379 192.168.92.131:6379 192.168.92.132:6379 192.168.92.132:6380 192.168.92.132:6381 192.168.92.132:6382
  replicas 后面的 1 代表分配每个主库多少个从库。这就回答了,为什么不需要像sentinel那样指定哪个从库跟随哪个主库。因为已经自动配置好了。
  执行后会询问你一个问题: Can I set the above configuration? (type 'yes' to accept): 此时,输入yes即可。集群就搭建好了。如下图:
Spring-Redis 集群环境搭建_第8张图片
 期间遇到的错误有:
 问题1:

 问题2:
Spring-Redis 集群环境搭建_第9张图片
 以上问题,将redis目录下的如下图所示的三个文件删除即可。重新执行上述集群搭建命令。 
  Spring-Redis 集群环境搭建_第10张图片
 问题3:

  原因:redis实例数少于6
 
 1.4 使用Redis客户端查看集群
  Spring-Redis 集群环境搭建_第11张图片
  发现,集群中只有索引为0的数据库了。完美。

2.Spring 和 Redis Cluster整合

  这里的过程参考了,感谢原作者的付出 http://www.sojson.com/blog/203.html
项目demo也放在了GitHub上,地址也是:https://github.com/BigOrange1994/SpringBootLearn.git
  大致过程说明:
   2.1 配置spring-redis-cluster.xml
  第一步:配置JedisConnectionFactory,用于建立连接 
  第二步:配置JedisPoolConfig ,以后从这个池子里拿连接
  第三步:RedisClusterConfiguration,用于配置redis cluster集群相关
  第四步:配置RedisTemplate ,Spring提供的高抽象级别的、具有更高交互性的redis操作模板
   2.2 项目结构
  Spring-Redis 集群环境搭建_第12张图片
    2.3 测试和结论
   测试代码:
Spring-Redis 集群环境搭建_第13张图片
  测试结果:  

 

你可能感兴趣的:(Spring-Redis)