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无法访问的问题。
 
  第三步(可选):在 APPEND ONLY MODE下,把appendonly 设置为 yes。目的:使用redis的AOF快照方式进行持久化。   
 
 说明:redis中的其他配置,自选进行配置,配置在配置文件的各部分中都有详细的英文说明。
 1.2 配置sentinel.conf
 第一步:将protected-mode设置为no,如下图。目的:防止保护模式开启造成的远端IP无法获得sentinel的问题。
 
  第二步:配置监控的对象。找到sentinel monitor ...部分,如下图。设置被监控的主库IP, 端口号,主库挂掉时,哨兵同意进行恢复的数量。其中“ mymaster”为自定义的主库名,redis默认定义为mymaster。如果想改成别的名字,记得在配置中把其他使用了mymsater的位置一并修改。
 
 1.3 配置从库的redis.config
 在1.1的基础上,只需要在REPLICATION部分,找到下图位置,设置要跟随的主库的IP地址和端口即可。
 
  注意:这里要写主库的实际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 项目结构。  
 
   2.5 运行结果
  如果在启动时,看到如下的配置,说明你的配置都没有问题了,可以用自定义的RedisUtil中的方法测试。
 运行结果:  

二、Cluster模式

1. Linux Redis Cluster搭建

    Cluster模式至少需要“三主三从”(即:三个主库三个从库),方可搭建集群。开启6个redis实例即可。每个实例只需要配置redis即可。不需要指定谁是主库谁是从库。在之后的步骤里,会进行说明。
   1.1 配置redis.conf
    在第一部分Sentinel模式的1.1的基础上,只需要在REDIS CLUSTER部分,找到下图位置,设置集群模式为yes即可。

 1.2 设置redis的端口号(可选, 如果6个redis实例的IP相同,则需要配置不同的端口号)
  在NETWORK 部分,找到下图位置,设置端口号即可。

  1.3 借助redis.trib.rb完成集群初始化
 在linux 终端下,使用下图红框命令,安装辅助工具。
 安装完成后,使用命令:
 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即可。集群就搭建好了。如下图:

 期间遇到的错误有:
 问题1:

 问题2:

 以上问题,将redis目录下的如下图所示的三个文件删除即可。重新执行上述集群搭建命令。 
 
 问题3:

  原因:redis实例数少于6
 
 1.4 使用Redis客户端查看集群
 
  发现,集群中只有索引为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 项目结构
 
    2.3 测试和结论
   测试代码:
  测试结果:  

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值