搭建redis单机
本文搭建redis3.0版本,3.0主要增加了redis集群功能。
下载地址
解压源码
编译源码
安装到指定目录
进入源码目录,将redis.conf拷贝到安装路径
修改redis.conf配置文件,以后端模式启动
启动redis
redis.conf 配置文件主要配置
jedis连接 redis 单机
连接池整合spring:
测试:
FAQ
如果连接不上,可查看是否防火墙没有将redis端口开放,/etc/sysconfig/iptables添加:
然后重启防火墙。
搭建redis集群
安装ruby环境
集群管理工具redis-trib.rb依赖ruby环境 (1)安装ruby:
(2)安装ruby和redis的接口程序: 拷贝redis-3.0.0.gem至/usr/local。执行:
建立redis实例
(1)建立存放redis群的文件夹及子文件夹(用于存放每个redis实例):
(2)将刚刚安装的单机redis的/usr/local/redis文件夹拷贝到每个700X文件夹下,(这里我们建立六个实例,三主三从)
(3)修改每个700X目录下的redis.conf配置文件:
另外,由于下面我们需要配置集群密码,故之前配置的 requirepass 先删掉,集群成功后再进行配置。
启动各个redis
分别进入7001、7002、…7006目录,执行:
创建集群:
注意: (1)为保证远程可访问,这里的ip尽量使用公网ip,且创建集群时可先关闭防火墙,否则可以出现一直join……的现象。
(2)redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点
(3)replicas指定为1表示每个主节点有一个从节点
(4)如果出现[ERR] Sorry, can't connect to node错误:
ruby 和rubygem 版本太低,安装新版本。查看gem版本和redis版本(redis-cli -v可查看redis版本)
查看reids配置文件,bind绑定的允许连接的ip是否正确。
是否redis配置文件还是使用了密码,使用了密码也可能导致这个错误。
(5)如果出现[ERR] Node 127.0.0.1:7005 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0: 表示集群时,之前的redis已有数据,那么登录到7005的redis中,执行FLUSHALL即可
(6)如果出现ERR Slot 0 is already busy (Redis::CommandError): 用redis-cli登录到每个节点执行flushall和cluster reset即可2.6进入集群:
检查集群是否成功
进入集群后,键入cluster info,显示cluster_state:ok,表示成功
设置密码
(1)登录到每个节点,执行:
(2)随后登入 7001/bin/redis-cli -c -h 112.74.55.239 -p 7004 -a 你的密码,执行: config rewrite
(3)防火墙开放7001到7006端口,以及redis总线:17001到17006:
JedisCluster连接redis集群
整合spring:
测试: