在安装 redis 的时候需要先安装 tcl
下载 tcl 包
https://sourceforge.net/projects/tcl/files/Tcl/8.6.8/tcl8.6.8-src.tar.gz/download
tar -zxvf tcl8.6.8-src.tar.gz
cd tcl8.6.8
cd unix/
./configure
make && make install
安装 redis
下载一个 redis
http://www.redis.cn/download.html
选择一个版本的 使用的3.2.9
redis-3.2.9.tar.gz
解压
tar -zxvf redis-3.2.9.tar.gz
cd redis-3.2.9
make && make test && make install
------------------------------------------------------------------------------------------------------------------------------
生产环境的启动方案
1、创建两个目录
mkdir -p /etc/redis 存放 redis 的配置文件
mkdir -p /var/redis/6379 存放 redis 的持久化文件
2、将 redis/redis.conf 拷贝到 /etc/redis 目录下
cp redis.conf /etc/redis、
重命名 /etc/redis/ 目录下的 redis.conf 为 6379.conf
3、修改 6379.conf 配置文件
daemonize yes 守护进程
pidfile /var/run/redis_6379.pid redis 的 pid 文件位置
port 6379 端口
dir /var/redis/6379 持久化文件存放位置
4、将 redis -> utils 下的 redis_init_script 脚本放到 /etc/init.d 目录下
并且名字改为 redis_6379, 设置为跟随系统启动
cd /usr/local/redis-3.2.9/utils
cp redis_init_script /etc/init.d/
cd /etc/init.d/
mv redis_init_script redis_6379
chmod 777 redis_6379
在 redis_6379 启动脚本中添加两行注释
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
chkconfig redis_6379 on
----------------------------------------------------------------------------------------------------------------------------
关于 redis 的两种持久化方案的配置
redis 的持久化方案分为 RDB 和 AOF
1、RDB 的配置
配置 /etc/redis/6379.conf 配置 save 就同时开启了 RDB 持久化
save 900 1
save 300 10
save 60 10000
2、AOF 持久化
配置 /etc/redis/6379.conf
appendonly yes 打开 AOF 持久化
注意:
如果 RDB 和 AOF 同时工作的话,如果 redis 重启, 会优先使用 RDB 的持久化方案
也就是用 /var/redis/6379/dump.rdb 来恢复数据
--------------------------------------------------------------------------------------------------------------------------------
redis replication
一、配置主从
从节点的 6379.conf 中配置
slaveof masterip masterport 设置主节点
slave-read-only yes 强制性的读写分离,子节点只读不可写
主从节点的 6379.conf 的 bind hostip 都要配置
用 redis-cli -h hostip 来连接 redis
先开始主节点,再开启从节点
注意: 添加 6379 到 tcp 监听
systemctl start firewalld.service
firewall-cmd --zone=public --add-port=6379/tcp --permanent
iptables -A INPUT -ptcp --dport 6379 -j ACCEPT
systemctl stop firewalld.service
---------------------------------------------------------------------------------------------------------------------------------
redis sentinel(哨兵)
一、先建两个目录
mkdir -p /etc/sentinel/ 存放 sentinel 的配置文件
mkdir -p /var/sentinel/5000/ 用来存放 sentinel 的日志
二、将 redis 的 sentinel.conf 放到 /etc/sentinel/ 下
三、将 sentinel.conf 修改为 5000.conf
mkidr -p /var/log/sentinel/5000
添加
daemonize yes
logfile /var/log/sentinel/5000/sentinel.log
修改以下配置
bind 127.0.0.1 192.168.6.58
port 5000
dir /etc/sentinel/5000
sentinel monitor mymaster 192.168.6.58 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
启动:
redis-sentinel /etc/sentinel/5000.conf
查看日志能看到 sentinel 的信息,和主节点从节点的信息
根据 sentinel 的节点发现机制能自动发现 sentinel 不需要我们配置就能找到
sentinel 的节点管理
进入
redis-cli -h 192.168.6.58 -p 5000
sentinel master mymaster -- master 信息
sentinel slaves mymaster -- 从节点信息
sentinel sentinels mymaster -- sentinel 信息
sentinel get-master-addr-by-name mymaster -- 获取 master 的地址
---------------------------------------------------------------------------------------------------------------------------------
redis cluster 的配置
一、创建两个目录
mkdir /etc/redis-cluster 节点的配置文件目录
mkdir /var/log/redis 日志路径
mkdir -p /var/redis/7002 持久化文件路径
二、将 、/usr/local/redis 下的 redis.conf 拷贝到 /etc/redis-cluster 下 并改名为 7001.conf
cp /usr/local/redis-3.2.9 /etc/redis-cluster
mv redis.conf ./7001.conf
三、修改 配置文件
vi 7001.conf
port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/nodes-7001.conf
daemonize yes
pidfile /var/run/redis_7001.pid
dir /var/redis/7001
logfile /var/log/redis/7001.log
bind 192.168.6.58
appendonly yes
注意:
在配置文件中不能包含 slaveof 的配置存在
四、配置启动文件
cd /usr/local/redis-3.2.9/utils/
cp redis_init_script /etc/init.d/
mv redis_init_script redis_7001
vi redis_7001
REDISPORT=7001
按照以上的配置,在三台机器上分别配置两个文件,总共6份
分别启动这6个实例
五、集群管理工具
安装 ruby
第一种方式:
yum install -y ruby
yum install -y rubygems
gem install redis
cp /usr/local/redis-3.2.9/src/redis-trib.rb /usr/local/bin
用以上方法安装的 ruby 版本是2.0.0 可能不适合
第二种方式
下载 ruby 的包
cd /usr/local
wget http://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
tar -zxvf ruby-2.5.0.tar.gz
cd ruby-2.5.0/
./configure --prefix=/usr/local/ruby
cd /usr/local/ruby
cp ./bin/ruby /usr/local/bin/
cp ./bin/gem /usr/local/bin/
ln -s /usr/local/bin/ruby /usr/bin/ruby
检查 ruby -v
安装 ruby gem redis 依赖
cd /usr/local
wget http://rubygems.org/downloads/redis-3.3.0.gem
集成openssl库到ruby
yum install zlib-devel
cd /etc/local/ruby-2.5.0
cd ext/zlib
ruby extconf.rb
//在操作下一步之前需要修改Makefile文件中的zlib.o: $(top_srcdir)/include/ruby.h,
//将$(top_srcdir)修改为../..如下
//zlib.o: ../../include/ruby.h
//这一步如果不修改,make时会爆出另外一个错误
//make:*** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop
make && make install
cd /usr/local
gem install -l /etc/local/redis-3.3.0.gem
如果出现错误[-bash: /usr/bin/gem: No such file or directory]
ln -s /usr/local/bin/gem /usr/bin/gem
检查redis-trib.rb的可用性
./redis-4.0.1/src/redis-trib.rb
出现以上信息表示可用
另一个缺少 openssl 库的错误
yum install openssl-devel
集成 openssl 库到 ruby
cd /etc/local/ruby-2.5.0
cd ext/openssl
ruby extconf.rb
//同样修改Makefile中的$(top_srcdir)为../..
make && make install
六、创建 redis-cluster 集群
cp /usr/local/redis-3.2.9/src/redis-trib.rb /usr/local/bin
redis-trib.rb create --replicas 1 192.168.6.58:7001 192.168.6.58:7002
192.168.6.63:7003 192.168.6.63:7004
192.168.6.65:7005 192.168.6.65:7006
查看集群信息
redis-trib.rb check 192.168.6.58:7001