本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。安装的前提条件:
需要安装gcc:yum install gcc-c++
1.安装redis:
1).下载redis3.0的源码包,上传到linux服务器,然后使用如下命令解压redis的源码包:
tar -zxvf redis-3.0.0.tar.gz
2).解压完成会生产一个新的文件夹,进入该文件夹,对生产的文件使用make命令编译:
make
3).安装redis(PREFIX用于指方式定安装目录)
make install PREFIX=/usr/local/redis
如此redis就安装完成了:接下来就是redis的启动,主要有两种方式启动redis,一种是前端启动,也就是显示到当前的界面,一种将redis作为守护进程在后台启动;
2.redis启动方式:
1).前端启动模式与启动大多数linux程序一样:
./redis-server
2).后端启动模式则需要将解压的redis文件夹下面的redis.conf文件拷贝到安装目录下,也就是/usr/local/redis/bin 目录下,先进入redis解压的文件夹,然后copy:
cp redis.conf /usr/local/reddis/bin/
3).修改配置文件,让redis以守护进程的形式运行:
vi redis.conf
4).将deamonize no 修改为 deamonize yes,然后启动redis
./redis-server redis.conf
3.redis集群安装:
1).首先先简单了解redis的集群算法:
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点,如图是redis的集群示意图:
a.当有一个节点向其他节点发起通信(ping-pong),但是一直未收到该节点的响应的话,那么该节点就会想其他的节点发出一个该节点不可用的信号,并且收到信号的节点也会想被怀疑挂掉的节点发起通信,如果有超过半数的节点认为该节点不可用的话,此节点(master)就会被认为不可用,此时,如果有从节点(slave)的话,该从节点就会被启动。
b.什么时候整个集群不可用(cluster_state:fail)?
1:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态.
2:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.
当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误.
2).redis客户端向服务器发起一个连接以后,在集群环境下可以连接到任意的一个节点,如果连接的不是该节点就发生跳转。
3).本次安装主要在一台虚拟机上安装6个实例来模拟redis的集群:
a.redis集群需要使用到ruby脚本,所以需要安装ruby相关的依赖:
(1).安装ruby
yum install ruby
yum install rubygems
(2).ruby相关依赖,在本地下载好一会上传到服务器后解压该文件:
tar -zxvf redis-3.0.0.gem
(3).安装依赖:
gem install redis-3.0.0.gem
b.拷贝redis的安装目录,其实就是拷贝6份redis应用程序(拷贝第一份后先向bin目录下以.rdb结尾的文件删除),然后修改其配置文件:
cp -r redis redis01
.....
首先修改每个redis配置文件的端口号,只有不重复就行, 其次是将 cluster-enabled 的注释去掉,允许集群。
vi redis01/redis-conf
...
(4).将解压文件夹下src目录下的ruby文件拷贝到与redis应用程序同一级别的目录下,就是存放redis01,redis02的哪一级目录:
cp /home/ftpuser/files/redis-3.0.0/src/redis-trib.rb ./
(5).分别启动该6个redis实例:
(6).创建集群:
./redis-trib.rb create --replicas 1 192.168.1.48:8001 192.168.1.48:8002 192.168.1.48:8003 192.168.1.48:8004 192.168.1.48:8005 192.168.1.48:8006
(7).测试集群环境:
redis01/redis-cli -h 192.168.1.48 -p 7002 -c
(8).redis服务的关闭
a.利用redis-cli进入连接,然后执行shutdown
b.直接在命令行关闭;
#连接redis服务
./redis-cli -p 6379
#连接界面关闭
shutdown
#直接命令行关闭
./redis-cli -p 6379 shutdown