目录
一、单台
1.下载安装包,解压,重命名,安装redist需要安装支持包
2. 查看gcc版本,进入redis目录
3.编译
4.编译产更后,修改配置文件
5.编译后默认/usr/local/bin下,启动redis
6.登录
7. 添加为服务:
二、linux集群(一台虚机安装6个节点)
1. 根据以上步骤安装redis
2. 这里介绍一台虚机安装6个节点的redis集群模式
3. 安装ruby(对于低版本的redis需要安装ruby,redis5.0以上版本不需要安装)
4 . 需支持redis的通信,需要redis相关包
5. 分别启动redis
6. 启动集群:
7. 执行完成后,会出现六个节点的主从分配,之后需输入yes,执行完成
8. 注意
一、单台
1.下载安装包,解压,重命名,安装redist需要安装支持包
yum install gcc-c++ -y
2. 查看gcc版本,进入redis目录
gcc -v (查看是否需要更新gcc版本,gcc版本对不上,可能会出现编译异常)
3.编译
make && make install
(make && make install PREFIX=/usr/local/apps/redis/redis-5.0.9)
(bin目录会自动创建 )
--->1).&&连接两个命令,前面命令的返回值决定是否执行后面的命令
--->2).PREFIX(注意:大写)指定安装目录,若目录不存在,则自动创建
4.编译产更后,修改配置文件
# 默认情况下,redis不是在后台模式运行的,如果需要在后台进程运行,把该项的值更改为yes,默认为no
daemonize no 改为 yes (代表后台启动)
# 指定redis监听端口,默认为6379
port 6379
# 指定redis只接收来自于该IP地址的请求,如果不进行设置,默认将处理所有请求,我们是在生产环境下,所以这是必备项
bind 0.0.0.0
# 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
timeout 2
# 设置最大同时连接客户端数量,0表示没有限制,一旦达到这个限制,Redis会关闭所有新连接并发送错误达到最大用户数上限。
maxclients 1024
#如果不希望丢掉任何一条数据的话就该用纯累加模式:一旦开启这个模式,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件。
appendonly yes
# 设置纯累加文件名字及保存路径,默认:"appendonly.aof"
appendfilename appendonly.aof
pidfile "/var/run/redis_6379.pid"
#日志目录
logfile "/usr/local/redis/redis-5.0.9/logs/redis-6379.log"
#密码
requirepass redis000000
5.编译后默认/usr/local/bin下,启动redis
./redis-server /usr/local/apps/redis/redis-5.0.9/redis.conf 启动是指定配置文件
6.登录
./redis-cli -h 127.0.0.1 -p 6379
分配器allocator, 如果有MALLOC 这个环境变量, 会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。
但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数,运行如下命令:
make MALLOC=libc
7. 添加为服务:
reids目录下:
cd utils
cp redis_init_script /etc/rc.d/init.d/redis
下图并无&,闹错了,修改的路径根据自己redis安装路径修改
如果redis设置密码,需要修改脚本
添加
REQUIREPASS=lanlinker789***
$CLIEXEC -a $REQUIREPASS -p $REDISPORT shutdown 2>/dev/null
-a $REQUIREPASS:密码
2>/dev/null:去除Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.错误
问题原因:这串输出并不是普通输出,shell的标准输出包含两种,1(标准输出)2(标准错误)我们的命令,即包含1也包含2,2即是我们想要去除的提示。
#chkconfig 2345 10 90 添加对chkconfig的支持,2345表示服务允许启动的级别是2,3,4,5;10和90用于设置服务的启动顺序和关闭顺序。数值小的先执行,数值大的后执行。取值范围在0~99.
EXEC和CLIEXEC分别表示redis服务器后端启动和前端启动的应用程序路径。CONF指的是程序配置文件的路径,启动文件上方添加:
添加
#chkconfig: 2345 90 10
#description:auto_run
chkconfig --add redis 添加服务
chkconfig --list 列出所有服务
chkconfig redis on 开启自启
service redis start
service redis stop
二、linux集群(一台虚机安装6个节点)
1. 根据以上步骤安装redis
2. 这里介绍一台虚机安装6个节点的redis集群模式
六个节点部署不同的虚机,安装步骤相同
创建redis_cluster目录
cd /usr/local/redis
mkdir redis_cluster
创建redis节点目录
mkdir -p redis{7001..7006}
分别在节点目录创建conf配置文件目录、data数据目录,logs日志目录
在之前安装好的redis拷贝配置文件redis.conf到对应的节点目录
分别修改配置文件
对应的端口:7001、7002、7003、7004、7005、7006 及数据、日志存放目录
打开cluster-enabled yes
配置文件
# 默认情况下,redis不是在后台模式运行的,如果需要在后台进程运行,把该项的值更改为yes,默认为no
daemonize no 改为 yes (代表后台启动)
# 指定redis监听端口,默认为6379
port 6379
# 指定redis只接收来自于该IP地址的请求,如果不进行设置,默认将处理所有请求,我们是在生产环境下,所以这是必备项
bind 0.0.0.0
# 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
timeout 2
# 设置最大同时连接客户端数量,0表示没有限制,一旦达到这个限制,Redis会关闭所有新连接并发送错误达到最大用户数上限。
maxclients 1024
#如果不希望丢掉任何一条数据的话就该用纯累加模式:一旦开启这个模式,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件。
appendonly yes
# 设置纯累加文件名字及保存路径,默认:"appendonly.aof"
appendfilename appendonly.aof
pidfile "/var/run/redis_6379.pid"
#日志目录
logfile "/usr/local/redis/redis-5.0.9/logs/redis-6379.log"
#配置主机节点密码
masterauth redis000000
#密码
requirepass redis000000
#开启集群模式
cluster-enabled yes
3. 安装ruby(对于低版本的redis需要安装ruby,redis5.0以上版本不需要安装)
清理已安装过的 ruby
yum erase ruby ruby-libs ruby-mode ruby-rdoc ruby-irb ruby-ri ruby-docs
手动下载 (下载高版本)
https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.7.tar.gz
解压,进入目录
执行命令:./configure
执行命令:make && make install
配置环境变量
vim /etc/profile
#redis-ruby
export PATH=/usr/local/ruby-2.2.7/bin:$PATH
source /etc/profile
查看ruby版本号
ruby -v
4 . 需支持redis的通信,需要redis相关包
命令:gem install redis(可手动下载redis-3.3.5.gem)
5. 分别启动redis
启动脚本:
#!/bin/sh
/usr/local/apps/redis/redis-5.0.9/bin/redis-server /usr/local/apps/redis/redis_cluster/redis-7001/conf/redis.conf
/usr/local/apps/redis/redis-5.0.9/bin/redis-server /usr/local/apps/redis/redis_cluster/redis-7002/conf/redis.conf
/usr/local/apps/redis/redis-5.0.9/bin/redis-server /usr/local/apps/redis/redis_cluster/redis-7003/conf/redis.conf
/usr/local/apps/redis/redis-5.0.9/bin/redis-server /usr/local/apps/redis/redis_cluster/redis-7004/conf/redis.conf
/usr/local/apps/redis/redis-5.0.9/bin/redis-server /usr/local/apps/redis/redis_cluster/redis-7005/conf/redis.conf
/usr/local/apps/redis/redis-5.0.9/bin/redis-server /usr/local/apps/redis/redis_cluster/redis-7006/conf/redis.conf
6. 启动集群:
这个地方一定要注意 Redis 官方提供了 redis-trib.rb 这个工具但是 在redis 5.0以后的版本是不支持的,redis 5.0之后用redis-cli
1. 无密码
./redis-cli --cluster create 192.168.1.26:7001 192.168.1.26:7002 192.168.1.26:7003 192.168.1.26:7004 192.168.1.26:7005 192.168.1.26:7006 --cluster-replicas 1
2. 有密码,需添加 -a 密码
./redis-cli --cluster create 10.252.252.37:7001 10.252.252.37:7002 10.252.252.37:7003 10.252.252.37:7004 10.252.252.37:7005 10.252.252.37:7006 -a redis123456*** --cluster-replicas 1
7. 执行完成后,会出现六个节点的主从分配,之后需输入yes,执行完成
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.1.26:7001 to 192.168.1.26:7006
Adding replica 192.168.1.26:7002 to 192.168.1.26:7005
Adding replica 192.168.1.26:7004 to 192.168.1.26:7003
M: 80c80a3f3e33872c047a8328ad579b9bea001ad8 192.168.1.26:7001
slots:[0-5460] (5461 slots) master
S: b4d3eb411a7355d4767c6c23b4df69fa183ef8bc 192.168.1.26:7006
replicates 6788453ee9a8d7f72b1d45a9093838efd0e501f1
M: 4d74ec66e898bf09006dac86d4928f9fad81f373 192.168.1.26:7002
slots:[5461-10922] (5462 slots) master
S: b6331cbc986794237c83ed2d5c30777c1551546e 192.168.1.26:7005
replicates 80c80a3f3e33872c047a8328ad579b9bea001ad8
M: 6788453ee9a8d7f72b1d45a9093838efd0e501f1 192.168.1.26:7004
slots:[10923-16383] (5461 slots) master
S: 277daeb8660d5273b7c3e05c263f861ed5f17b92 192.168.1.26:7003
replicates 4d74ec66e898bf09006dac86d4928f9fad81f373
Can I set the above configuration? (type 'yes' to accept): yes #输入yes,接受上面配置
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
8. 注意
如果是在不同服务器部署,需要防火墙打开对应的端口,否则执行启动集群命令后,Can I set the above configuration? (type 'yes' to accept): yes 后会一直加载。
1. 各个节点对应redis的端口
2. 节点之间的通信端口
6台redis两两之间并不是独立的,每个节点都会通过集群总线,与其他的节点进行通信。通讯时使用特殊的端口号,即对外服务端口号加10000。例如如果某个node的端口号是7001,那么它与其它nodes通信的端口号是17001。nodes之间的通信采用特殊的二进制协议。
redis端口:
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
firewall-cmd --zone=public --add-port=7006/tcp --permanent
redis通信端口
firewall-cmd --zone=public --add-port=17001/tcp --permanent
firewall-cmd --zone=public --add-port=17002/tcp --permanent
firewall-cmd --zone=public --add-port=17003/tcp --permanent
firewall-cmd --zone=public --add-port=17004/tcp --permanent
firewall-cmd --zone=public --add-port=17005/tcp --permanent
firewall-cmd --zone=public --add-port=17006/tcp --permanent
firewall-cmd --reload