Redis 5.0 安装
注意事项
默认文件存放位置
-
可执行文件(如redis、redis-server、redis-sentinel、redis-cli):/usr/local/bin
-
库文件:/usr/local/lib
-
配置文件:/usr/local/etc
-
资源文件:/usr/local/share
版本大全
https://download.redis.io/releases/?_gl=1*1i0ead3*_gcl_au*MjAxNzQxMDA1LjE3Mjg2MzE4Mzg
Redis-cli --help
## 不展示警告信息
--no-auth-warning
## 以集群的形式启动客户端
-c
安装单实例步骤
- 下载
wget https://download.redis.io/releases/redis-5.0.9.tar.gz
- 解压
tar -zxvf redis-5.0.9.tar.gz
- 编译
cd redis-5.0.9
make
cd ..
mkdir redis
## mkdir bin
- 安装
## 回到redis编译的目录redis-5.0.9
make PREFIX=/data/dba/yanhao/redis/redis1/redis install
## 这里指定了目标目录,之后在卸载时,直接用rm -rf /data/dba/yanhao/redis/redis1/redis即可删除redis。
- 启动
./redis-server /data/dba/yanhao/redis/redis1/redis.conf &
./redis-server /data/dba/yanhao/redis/cluster/node1/redis.conf &
- 连接
## -h <hostname> Server hostname (default: 127.0.0.1).
## -p <port> Server port (default: 6379).
## -s <socket> Server socket (overrides hostname and port).
## -a <password> Password to use when connecting to the server.
## You can also use the REDISCLI_AUTH environment
## variable to pass this password more safely
## (if both are used, this argument takes predecence).
## -u <uri> Server URI.
./redis-cli -h 127.0.0.1 -p 63790 -a 123456
所使用的配置文件
# 是否以守护进程启动,默认:no
daemonize no
port 63790
logfile /data/dba/yanhao/redis/redis1/redis.log
requirepass 123456
databases 16
# 日志级别配置 默认:notice
## debug:能设置的最高的日志级别,打印所有信息,包括debug信息。
## verbose:打印除了debug日志之外的所有日志。
## notice:打印除了debug和verbose级别的所有日志。
## warning:仅打印非常重要的信息。
loglevel notice
常见配置
基本配置
## 是否以守护进程启动 默认:no
daemonize no
## 用于设置Redis绑定的网络接口(网卡)。如果不配置bind,默认情况下Redis监听所有可用的网卡,redis只接受来自绑定网络接口的请求。
## Redis的配置文件中一般默认有bind 127.0.0.1,只允许本地连接,如果想要被远程访问注释掉bind配置或者bind外网ip即可。
bind 127.0.0.1
## 是否开启保护模式 默认:yes,是否有效会被bind和requirepass配置影响
## 当protected-mode为yes
### 注释bind和requirepass,redis的保护模式生效,只能通过本地连接
### 只注释bind,配置requirepass,redis的保护模式失效,可以通过密码远程连接
### 只注释requirepass,redis的保护模式失效,可以通过bind的ip无密码连接
## 当protected-mode为no
### 无论上面的哪种场景,客户端都可以根据 bind 及 requirepass 实际参数来连接到 redis
protected-mode yes
## redis服务端口 默认:6379
port 6379
## 客户端连接空闲时间单位秒,如果在指定时间内没有操作则会断开连接 默认:0(不超时)
timeout 0
## tcp心跳检测时间单位秒,对访问客户端的一种心跳检测,每个n秒检测一次 默认:0(不检测),建议设置成60
tcp-keepalive 0
## 客户端最大连接数,设置redis同时可以与多少个客户端进行连接 默认:10000
maxclients 10000
## 日志级别配置 默认:notice
## debug:能设置的最高的日志级别,打印所有信息,包括debug信息。
## verbose:打印除了debug日志之外的所有日志。
## notice:打印除了debug和verbose级别的所有日志。
## warning:仅打印非常重要的信息。
loglevel notice
## 日志文件输出路径配置
## 该路径默认为空。可以根据自己需要把日志文件输出到指定位置。
logfile ""
## 数据库数量配置 默认:16
databases 16
## 连接密码配置 默认无密码
requirepass 123456
## 配置data目录
dir /data/dba/yanhao/redis/redis1/data
RDB全量持久化配置
# 持久化数据存储在本地的文件名称 默认:dump.rdb
dbfilename dump.rdb
# 持久化数据存储在本地的路径,默认:./(当前工作目录)
dir /data
# 用于设置RDB持久化的时间间隔和条件
## 表示每900秒内有至少1个写操作就保存一次RDB文件
save 900 1
## 表示每300秒内有至少10个写操作就保存一次RDB文件
save 300 10
## 表示每10秒内有至少1000个写操作就保存一次RDB文件
save 60 10000
# 当RDB持久化时出现错误无法继续时,是否阻塞客户端变更操作,错误可能因为磁盘已满/磁盘故障/OS级别异常等 默认:yes
stop-writes-on-bgsave-error yes
# 是否启用RDB文件压缩,默认: yes,压缩往往意味着额外的cpu消耗,同时也意味这较小的文件尺寸以及较短的网络传输时间
rdbcompression yes
AOF增量持久化配置
# 是否开启AOP 默认:no
appendonly yes
# 指定AOF文件名称
appendfilename appendonly.aof
# 用于设置AOF文件的同步策略 默认:everysec
## 可以选择"always"、"everysec"或"no"。always表示每次写入都同步,everysec表示每秒同步一次,no表示由操作系统决定何时同步
appendfsync everysec
# 用于设置自动AOF重写的阈值。当AOF文件的扩展比例超过该值时,Redis会自动执行重写操作。默认值为100,表示当AOF文件的大小是上一次重写后大小的一倍时触发重写。
auto-aof-rewrite-percentage 100
# 用于设置自动AOF重写的最小大小。只有在AOF文件的大小大于该值时,才会执行重写操作。默认值为64MB,建议512mb
auto-aof-rewrite-min-size 64mb
# 用于设置在执行AOF文件重写时是否禁用同步。如果设置为yes,则在进行重写时不会进行同步操作,默认:no
no-appendfsync-on-rewrite no
# 用于设置在加载AOF文件时是否允许Redis忽略出现错误的命令。如果设置为"yes",则忽略错误;如果设置为"no",则不允许加载出现错误的AOF文件。默认:yes
aof-load-truncated yes
# 用于设置AOF文件的开头是否包含RDB格式的部分。如果设置为"yes",则在AOF文件的开头会先保存一份RDB格式的数据,这有助于加速数据加载。默认:no
aof-use-rdb-preamble no
Redis 过期key监听配置
# key过期监听 默认:""(关闭),将notify-keyspace-events设置为Ex代表开启
notify-keyspace-events Ex
主从部署
复制一个配置文件,修改相应的差异化参数,如数据目录、pid文件、log文件等等
port 63791
requirepass 123456
## 主节点地址
replicaof 127.0.0.1 63790
## 主节点登录密码
masterauth new2020
启动从节点
bin/bin/redis-server /data/dba/yanhao/redis/redis1/redis_63791.conf &
测试
连接到主节点,
set test aaa
再到从节点验证
登录到从节点,执行info
命令
info
登录到主节点,执行info
命令
info
哨兵模式部署(1主、1从、3哨兵)
配置文件
解压编译出来的redis文件夹中copy一个出来
cp sentinel.conf /data/dba/yanhao/redis/redis1/
## 创建相应的配置文件,
## 启动sentinel节点
bin/bin/redis-server /data/dba/yanhao/redis/redis1/sentinel_63792.conf --sentinel &
只需要考虑这些参数,sentinel节点配置文件与主从的配置文件不一样
daemonize的值从no设置为yes
##pidfile /usr/local/redis/run/redis-sentinel.pid
##logfile "/usr/local/redis/logs/redis-sentinel.log"
## dir /usr/local/redis/tmp
##设置redis主机IP地址,端口,选举次数
sentinel monitor mymaster 127.0.0.1 63790 2
## 设置redis主机访问密码
sentinel auth-pass mymaster 123456
## 心跳检测8000毫秒,如果主机8秒内没有响应,就会在从机开始选举
sentinel down-after-milliseconds mymaster 8000
## 执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
启动sentinel节点
printf '%s\n' 2 3 4 | xargs -I{} -t ./redis-server /data/dba/yanhao/redis/redis1/sentinel_6379{}.conf --sentinel &
关闭节点
printf '%s\n' 63792 63793 63794 | xargs -I{} -t ./redis-cli -h 127.0.0.1 -p {} -a 123456 shutdown
查看信息,是否配置ok
info
## 看sentinel数量和slave数量
集群模式部署
部署
配置文件
/data/dba/yanhao/redis/cluster/node1/redis.conf
....
/data/dba/yanhao/redis/cluster/node6/redis.conf
daemonize yes
bind 127.0.0.1
protected-mode yes
port 10000
timeout 0
tcp-keepalive 0
maxclients 10000
loglevel notice
## 日志文件输出路径配置
## 该路径默认为空。可以根据自己需要把日志文件输出到指定位置。
logfile ""
## 数据库数量配置 默认:16
databases 16
## 连接密码配置 默认无密码
requirepass 123456
## 配置data目录
dir /data/dba/yanhao/redis/cluster/node1/data
## 集群参数配置
cluster-enabled yes
cluster-config-file /data/dba/yanhao/redis/cluster/node1/nodes.conf
masterauth 123456
一键启动多个redis
printf '%s\n' 1 2 3 4 5 6 | xargs -I{} -t ./redis-server /data/dba/yanhao/redis/cluster/node{}/redis.conf &
查看集群节点配置文件
printf '%s\n' 1 2 3 4 5 6 | xargs -I{} -t cat /data/dba/yanhao/redis/cluster/node{}/nodes.conf
关闭节点
printf '%s\n' 10000 10001 10002 10003 10004 10005 | xargs -I{} -t ./redis-cli -h 127.0.0.1 -p {} -a 123456 shutdown
创建集群
./redis-cli -h 127.0.0.1 -p 10000 -a 123456 --cluster create --cluster-replicas 1 127.0.0.1:10000 127.0.0.1:10001 127.0.0.1:10002 127.0.0.1:10003 127.0.0.1:10004 127.0.0.1:10005
槽迁移、添加删除节点
启动两个节点
1. 按照上文步骤,创建两个节点的配置文件以及目录
2. 启动
添加主节点
## 第一个ip是要添加的节点ip:端口号,第二个ip为集群中任意一个机器ip:端口号
./redis-cli -h 127.0.0.1 -p 10000 -a 123456 --cluster add-node 127.0.0.1:10006 127.0.0.1:10000
## reshard新增的主节点分配槽
./redis-cli -h 127.0.0.1 -p 10000 -a 123456 --cluster reshard 127.0.0.1:10006
## 输入yes
## 输入槽的数量
添加从节点
## 跟上述步骤一样,需要先将节点添加到集群中
./redis-cli -h 127.0.0.1 -p 10000 -a 123456 --cluster add-node 127.0.0.1:10007 127.0.0.1:10000
## 登入新增加的节点
./redis-cli -h 127.0.0.1 -p 10007 -a 123456
## 为其指定出节点,0b68705276db5d11e7e9133ab5f87dff855dfe3a为增加的主节点10006的id
CLUSTER REPLICATE 0b68705276db5d11e7e9133ab5f87dff855dfe3a
删除主节点
- 迁移槽位,删除节点之前需将其槽位迁移到其他主节点
## 如:要将10006节点上的槽位迁移到10000节点上
./redis-cli -h 127.0.0.1 -p 10000 -a 123456 --cluster reshard 127.0.0.1:10000
## 选择迁移的槽位
## 输入接收节点id
## 输入源节点id
- 删除主节点
## 集群中任意机器ip:端口,要删除的主节点id
./redis-cli -h 127.0.0.1 -p 10000 -a 123456 --cluster del-node 127.0.0.1:10000 0b68705276db5d11e7e9133ab5f87dff855dfe3a
- 删除从节点
./redis-cli -h 127.0.0.1 -p 10000 -a 123456 --cluster del-node 127.0.0.1:10007 59c9722e1bb45c6b2bc57988991666a5c323c5ab
报错及解决
- (error) MOVED 4768 127.0.0.1:10000
启动redis-cli客户端时没加-c参数
./redis-cli -h 127.0.0.1 -p 10003 -a 123456 -c
总结
其实无论是mysql、mongo或者redis也好,安装的要点就在于data目录、存放二进制文件目录以及配置文件的创建以及授权。如mysql主要是mysql目录(解压出来的带有二进制文件的目录)、data目录(存放数据的)、my.cnf(mysql配置文件),在mysql中这些文件的都需要将所有者和所有组都改成mysql,如果有其他文件需要生成,则文件的父目录需要mysql能够读写。
-
配置文件参考 https://blog.csdn.net/weixin_44606481/article/details/133949570
-
redis单实例安装参考 https://www.cnblogs.com/ShineLeBlog/p/17622001.html
-
集群搭建参考https://blog.csdn.net/weixin_44642403/article/details/118885921