Linux系统的Redis各版本下载路径:https://download.redis.io/releases/,建议下载5.0以上的版本,下载后进行解压安装(
以我自己的虚拟机为例进行部署演示
)。
# 进入到redis安装目录,进行解压即可
cd /home/linux/redis
tar -xvf redis-5.0.13.tar.gz
部署单机版,配置文件可以修改,也可以不修改,看个人需求,一般修改处较少;
集群的话,有几处是必须要改的,比如开启集群、、开启日志、设置端口号等,下面附上我的配置做为参考:
# 设置绑定的ip
# bind 127.0.0.1
# 保护模式:允许外部网络连接redis服务,为了让其他ip访问当前redis
protected-mode no
# 设置端口号
port 7000
# 定期检测cli连接是否存活
tcp-keepalive 300
# 是否守护进程运行(后台运行)
daemonize yes
# 以后台进程方式运行redis,则需要指定pid 文件
pidfile /home/linux/redis/redis-5.0.13/7000.pid
# 日志级别,可选项有:
# debug(记录大量日志信息,适用于开发、测试阶段);
# verbose(较多日志信息);
# notice(适量日志信息,使用于生产环境);
# warning(仅有部分重要、关键信息才会被记录)。
loglevel notice
# 日志文件的位置
logfile "/home/linux/redis/redis-5.0.13/logs"
# 数据库的个数
databases 16
# 是否显示logo
always-show-logo yes
# 设置连接时密码
requirepass redis123
# 集群节点访问密码
masterauth redis123
# cli 最大连接数
maxclients 10000
# 是否开启集群
cluster-enabled yes
# 等待节点回复的时限
cluster-node-timeout 15000
#集群节点配置文件
cluster-config-file nodes-7000.conf
# 是否使用AOF持久化方式
appendonly yes
# appendfilename的文件名
appendfilename "appendonly_7000.aof"
# redis配置的最大内存容量
maxmemory 2GB
# 内存达到上限的处理策略(附上其它的策略说明)
# 1.volatile-lru(least recently used):最近最少使用算法,从设置了过期时间的键key中选择空转时间最长的键值对清除掉;
# 2.volatile-lfu(least frequently used):最近最不经常使用算法,从设置了过期时间的键中选择某段时间之内使用频次最小的键值对清除掉;
# 3.volatile-ttl:从设置了过期时间的键中选择过期时间最早的键值对清除;
# 4.volatile-random:从设置了过期时间的键中,随机选择键进行清除;
# 5.allkeys-lru:最近最少使用算法,从所有的键中选择空转时间最长的键值对清除;
# 6.allkeys-lfu:最近最不经常使用算法,从所有的键中选择某段时间之内使用频次最少的键值对清除;
# 7.allkeys-random:所有的键中,随机选择键进行删除;
# 8.noeviction:不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误;但是读操作都能正常的进行;
maxmemory-policy noeviction
Redis下载并解压后,修改配置文件:
cd /home/linux/redis/redis-5.0.13/
vim redis.conf
daemonize yes
# 可改可不改,知道当前端口号就行
port 6379
requirepass redis123
protected-mode no
logfile "/home/linux/redis/redis-5.0.13/logs"
启动 Redis 服务:
# 进入解压后的 src 目录
cd /home/linux/redis/redis-5.0.13/src
./redis-server ../redis.conf
客户端连接:
# 在 src 目录中使用 redis-cli 连接
./redis-cli -a redis123 -p 6379
# 常用基本命令
# set
set "hello" "world"
# get
get hello
# 获取所有的值
keys *
# redis 信息,查看版本什么的
info
至此单机版搭建完毕。
集群说明:
默认大家都了解集群概念及其原理,不了解的可自行查阅资料,此文不做过多赘述。
必要条件:
要搭建Redis集群,至少需要部署 6 个节点,三主(Master
)三从(Slave
),当一个主节点挂掉后,会随机从其它一个从节点选一个当主节点
另:Redis 5.0以上版本,不需要安装 ruby 环境
5.0 以下是需要的,因为要用 redis-trib.rb 脚本来增加集群节点,这个脚本需要 ruby 环境的支持。
以下分两部分分别介绍:
以我的两个虚拟机为例:192.168.43.140
、192.168.43.194
,首先在这两台虚拟机上分别部署一套 redis,先不要启动服务
在 192.168.43.140
上新建 7000-7002.conf 3个文件,192.168.43.194
新建 7003-7005 3个文件,复制以上配置文件内容(可根据实际情况,将里面的配置修改为自己的配置项
),端口分别修改为 7000-7005,放到解压后的 redis-5.0.13 目录下,并依次启动,附上启动脚本:
# 192.168.43.140
#!/bin/bash
cd /home/linux/redis/redis-5.0.13
src/redis-server 7000.conf
echo "7000 start success~~"
sleep 1
src/redis-server 7001.conf
echo "7001 start success~~"
sleep 1
src/redis-server 7002.conf
echo "7002 start success~~"
sleep 1
# 192.168.43.194
#!/bin/bash
cd /home/linux/redis/redis-5.0.13
src/redis-server 7003.conf
echo "7003 start success~~"
sleep 1
src/redis-server 7004.conf
echo "7004 start success~~"
sleep 1
src/redis-server 7005.conf
echo "7005 start success~~"
sleep 1
需保证两台虚拟机的 redis 节点可以互通,使用 telnet 命令测试
# 在 192.168.43.194 上执行
telnet 192.168.43.140 7000
# 在 192.168.43.140 上执行
telnet 192.168.43.194 7004
不关防火墙的话,就需要开通双方的 redis 端口,较麻烦,省事的话就直接把防火墙关了吧。
# 关闭
systemctl stop firewalld
# 开启
systemctl start firewalld
# 查看防火墙状态
systemctl start firewalld
如果不想关防火墙,开通端口可用以下命令:
# 开通端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent
# 开通后需要重新加载一下防火墙,否则不生效
firewall-cmd --reload
# 查看所有开通了的端口
firewall-cmd --zone=public --list-ports
# 查看某个端口的开通情况
firewall-cmd --query-port=7000/tcp
# 在随便一台服务器上的 src 目录,执行以下命令:
./redis-cli --cluster create --cluster-replicas 1 192.168.43.140 7000 192.168.43.140 7001 192.168.43.140 7002 192.168.43.194 7003 192.168.43.194 7004 192.168.43.194 7005
节点添加过程中,要输入一次 yes
# 集群验证命令
# 随便登陆一个节点
# 参数说明:
# -a:密码认证
# -c:连接集群节点
# -h:集群节点的服务器 IP 地址
# -p:集群节点端口
cd /home/linux/redis/redis-5.0.13/src
./redis-cli -a redis123 -c -h 192.168.43.140 -p 7002
# 进入后输入:
# 将会列出6个节点,节点后面带 master 的表示为主节点,带 slave 的是从节点
cluster nodes
# 查看集群信息
cluster info
杀掉任一 redis 节点后,在输入cluster nodes
,该节点后面会出现 disconnect
表示该节点未连接。
配置文件、防火墙设置 参考上面 5.0 以上版本配置即可,主要是集群节点的添加方式不同,需要安装 ruby 环境。
有的服务器自带 ruby 版本,一般是 2.0.0,这个版本较低,需要卸载安装高版本的,不然使用 redis-trib.rb 脚本添加节点的时候会提示版本太低,和 redis 版本不兼容。
# 如果服务器有自带的 ruby,可以先看下版本
ruby -v
安装 ruby 有两种方式:
本文提供离线文件,可直接下载使用
# 直接下载特别慢
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
# 下载下来后解压
tar xvf ruby-2.5.1.tar.gz
# 编译安装
cd ruby-2.5.1/
./configure -prefix=/usr/local/ruby
make && make install
cd /usr/local/ruby/
cp bin/ruby /usr/local/bin
cp bin/gem /usr/local/bin
# 将文件上传至服务器,解压后编译安装
tar -xvf rvm-1.29.9.tar.gz
cd rvm-1.29.9
./install --auto-dotfile
source /usr/local/rvm/scripts/rvm
# 查看 rvm 版本
rvm -v
# 查看 rvm 安装了的应用
rvm list
# 查看 rvm 里的 ruby 版本
rvm list known
# 这里安装2.6.3
rvm install 2.6.3
# 将安装好的 ruby 设置默认版本
rvm use 2.6.3 --default
wget http://rubygems.org/downloads/redis-3.3.0.gem
gem install -l redis-3.3.0.gem
或使用本文提供的离线安装包中的安装:
gem install -l redis-5.0.6.gem
# 依赖安装成功后,往集群添加节点
cd /home/linux/redis/redis-5.0.13/src
./redis-trib.rb create --replicas 1 192.168.43.140 7000 192.168.43.140 7001 192.168.43.140 7002 192.168.43.194 7003 192.168.43.194 7004 192.168.43.194 7005
集群验证命令和上述高版本 Redis 集群一样的,至此 Redis 集群部署教程结束,有不懂的可在下方评论,大家一起讨论讨论。