介绍redis的安装及相关配置说明
前言
为了可以使用redis来做缓存服务器,首先需要进行服务的安装并启动服务,这里主要介绍的是单机单实例的安装
安装与启动
1.安装
可在官网查看redis的可用版本,一般选择最新的可用版,这里使用的是4.0.11
[root@vagrant bmsource]# wget http://download.redis.io/releases/redis-4.0.11.tar.gz
[root@vagrant bmsource]# tar zxvf redis-4.0.11.tar.gz
[root@vagrant bmsource]# cd redis-4.0.11
[root@vagrant redis-4.0.11]# make
如果在make
后执行make install
则redis的相关可执行文件会复制到/usr/local/bin
中。此处不使用这种方式,而是手动将可执行文件与配置文件复制到/usr/local/redis
中
[root@vagrant redis-4.0.11]# cd /usr/local/
[root@vagrant local]# mkdir redis
[root@vagrant local]# cp /bmsource/redis-4.0.11/src/redis-cli /usr/local/redis/
[root@vagrant local]# cp /bmsource/redis-4.0.11/src/redis-check-aof /usr/local/redis/
[root@vagrant local]# cp /bmsource/redis-4.0.11/src/redis-check-rdb /usr/local/redis/
[root@vagrant local]# cp /bmsource/redis-4.0.11/src/redis-benchmark /usr/local/redis/
[root@vagrant local]# cp /bmsource/redis-4.0.11/src/redis-server /usr/local/redis/
[root@vagrant local]# cp /bmsource/redis-4.0.11/src/redis-sentinel /usr/local/redis/
[root@vagrant local]# cp /bmsource/redis-4.0.11/redis.conf /usr/local/redis/
[root@vagrant local]# cp /bmsource/redis-4.0.11/sentinel.conf /usr/local/redis/
可执行文件说明
- redis-server:启动redis服务
- redis-cli:redis命令行客户端
- redis-benchmark:redis基准测试工具
- redis-check-aof:Redis AOF持久化文件检测和修复工具
- redis-check-dump:Redis RDB持久化文件检测和修复工具
- redis-sentinel:启动redis sentinel服务
为了以后可以方便使用,将redis路径配置到环境变量中
#编辑文件
[root@vagrant local]# vim /etc/profile
#增加配置
export REDIS=/usr/local/redis/
export PATH=$PATH:$REDIS
#生效配置
[root@vagrant local]# source /etc/profile
2.启动
redis的实际运行需要设置相关配置项,所以启动都是通过配置文件启动,且都是以守护进程模式运行
#编辑配置文件
[root@vagrant local]# vim /usr/local/redis/redis.conf
#设置为守护模式
daemonize yes
#启动
[root@vagrant local]# redis-server /usr/local/redis/redis.conf
#客户端查看
28191:C 24 Sep 06:25:41.019 # Configuration loaded
[root@vagrant local]# redis-cli
127.0.0.1:6379> info server
# Server
redis_version:4.0.11
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:90349ad45b8aa06a
redis_mode:standalone
os:Linux 2.6.32-573.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:sync-builtin
gcc_version:4.4.7
process_id:28192
run_id:86fc3f7746c55aa156f0af86289422d0aeeb733f
tcp_port:6379
uptime_in_seconds:76
uptime_in_days:0
hz:10
lru_clock:11043761
executable:/usr/local/redis-server
config_file:/usr/local/redis/redis.conf
127.0.0.1:6379>
3.单机多实例
资源不够,使用服务器的多进程与多线程,最大内存配置,错时持久化。
配置文件
此配置文件redis.conf对应的是redis-server,为单服务的配置
基本配置
基本配置 | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
daemonize | 守护进程 | no | yes|no | no |
port | 端口号 | 6379 | 整数 | no |
loglevel | 日志级别 | notice | debug|verbose|notice|warning | yes |
logfile | 日志文件 | 空 | 可按端口号区别 | no |
databases | 数据库数量 | 16 | 整数 | no |
unixsocket | unix套接字 | 空(不监听) | 套接字文件 | no |
unixsocketperm | unix套接字权限 | 0 | linux三位数权限 | no |
pidfile | 进程文件 | /var/run/redis.pid | /var/run/redis_{port}.pid | no |
lua-time-limit | lua脚本超时时间 单位:毫秒 |
5000 | 整数,超时还会执行 script kill 或 shutdown |
yes |
tcp-backlog | tcp-backlog | 511 | 整数 | no |
watchdog-period | 检查redis延迟问题 的周期 |
0 | 整数 | yes |
activerehashing | 重置hash | yes | yes:延迟要求不高,可尽快释放内存 no:延迟要求很高 |
yes |
dir | 工作目录 | ./(当前目录) | 自定义目录 | yes |
最大内存配置
内存淘汰算法:
- lru(Least recently used):最近最少使用
- lfu(Least Frequently Used):最不经常使用
最大内存 | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
maxmemory | 最大可用内存(字节) | 0(不限制) | 整数 | yes |
maxmemory-policy | 内存淘汰策略 如果设置了最大内存 |
noeviction | volatile-lru:可过期键,lru算法 allkeys-lru:所有键,lru算法 volatile-lfu:可过期键,lfu算法 allkeys-lfu:所有键,lru算法 volatile-random:可过期键,随机 allkeys-random:所有键,随机 volatile-ttl:可过期键,最近要过期键 noeviction:不淘汰,执行写命名返回错误 |
yes |
maxmemory-samples | lru,lfu,ttl采样数 | 5 | 整数 | yes |
AOF配置
AOF | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
appendonly | 开启aof持久化 | no | yes|no | yes |
appendfsync | 同步磁盘频率 | everysec | no|always|everysec | yes |
appendfilename | aof文件名 | appendonly.aof | appendonly_{port}.aof | no |
aof-load-truncated | 加载aof文件,是否忽略 aof不完整的情况 |
yes | yes|no | yes |
no-appendfsync-on-rewrite | rewrite期间对新的写入 是否不执行fsync |
no | yes|no | yes |
auto-aof-rewrite-min-size | 触发自动重写的aof文件 的最小阀值(兆) (即使不配置同步频率?) |
64M | 整数 | yes |
auto-append-rewrite-percentage | 触发自动重写的aof文件 的增长比例条件 (即使不配置同步频率?) |
100 | 整数 | yes |
aof-rewrite-incremental-fsync | 重写过程中,是否采取 增量文件同步策略,每 32M同步磁盘 |
yes | yes|no | yes |
RDB配置
RDB | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
save | 保存条件 | save 900 1 save 300 10 save 60 10000 |
不设置,表示不使用 rdb策略 |
yes |
dbfilename | 文件名 | dump.rdb | dump_{prot}.rdb | yes |
rdbcompression | 文件是否压缩 | yes | yes|no | yes |
rdbchecksum | 文件是否校验和 | yes | yes|no | yes |
stop-writes-on-bgsave-error | 当前bgsave执行错误,是否拒绝 redis服务的写请求 下次触发bgsave时会恢复写请求 |
yes | yes|no | yes |
慢查询配置
慢查询 | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
slowlog-log-slower-than | 慢日志被记录阀值(微秒) | 10000 | 整数 | yes |
slowlog-max-len | 慢日志队列长度 | 128 | 整数 | yes |
latency-monitor-threshold | 开启redis服务内存延迟监控 高负载的情况下,对性能可能会有影响 |
0(关闭) | 整数 | yes |
数据结构优化配置
数据结构优化 | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
hash-max-ziplist-entries | hash数据结构优化参数 | 512 | 整数 | yes |
hash-max-ziplist-value | hash数据结构优化参数 | 64 | 整数 | yes |
list-max-ziplist-size | list数据结构优化参数 | -2 | [-5,-1] >=0 |
yes |
list-compress-depth | list数据结构优化参数 | 0 | >=0 | yes |
set-max-intset-entries | set数据结构优化参数 | 512 | 整数 | yes |
zset-max-ziplist-entries | zset数据结构优化参数 | 128 | 整数 | yes |
zset-max-ziplist-value | zset数据结构优化参数 | 64 | 整数 | yes |
hll-sparse-max-bytes | HyperLogLog数据结构优化参数 | 3000 | 整数 | yes |
主从复制配置
主从复制 | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
slaveof | 从节点属于哪个主节点 | 空 | ip+port | no 可使用slaveof配置 |
repl-ping-slave-period | 从节点向主节点发送ping命令的周期(s) | 10 | 整数 | yes |
repl-timeout | 主从复制超时时间(s) (需>repl-ping-slave-period) |
60 | 整数 | yes |
repl-backlog-size | 复制积压缓冲区大小 保存从机断开连接期间的数据 |
1M | 整数 | yes |
repl-backlog-ttl | 积压缓冲区释放时间(s) 从节点缓冲区不能被释放,因为可能被提升为主节点 |
3600 | 整数 | yes |
slave-priority | 从节点优先级 越低的会优先被sentinel提升为master 0代表从永远不能变为master |
100 | [0-100] | yes |
min-slaves-to-write | 当从节点数<min-slaves-to-write且延迟<=min-slaves-max-lag时,master不接受写入请求。 防止有较多的从机不可用 |
0 | 整数 | yes |
min-slaves-max-lag | 10 | 整数 | yes | |
slave-serve-stale-data | 当从节点与主节点断开连接时,从节点是否可以继续提供服务 | yes | yes|no | yes |
slave-read-only | 从节点是否只读 集群模式,从节点读写都不可用,需要使用readonly手动开启 |
yes | yes|no | yes |
repl-disable-tcp-nodelay | 是否开启主从复制TCP_NODELAY yes:合并tcp包,降低带宽,会有延迟 no:立即同步,没有延迟 |
no | yes|no | yes |
repl-diskless-sync | 是否开启无盘复制 yes:直接将rdb文件发送到从机 no:先保存rdb文件,逐步将文件发送给从机 |
no | yes|no | yes |
repl-diskless-sync-delay | 无盘复制时,开始传送rdb文件的等待时间 用于等待多个从机加入进来,可一起传送 |
5 | yes |
客户端配置
客户端 | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
maxclients | 最大客户端连接数 | 10000 | 整数 | yes |
client-output-buffer-limit | 客户端输出缓冲区限制 | normal 0 0 0 slave 256mb 64mb 60 pubsub 32mb 8mb 60 |
整数 | yes |
timeout | 客户端闲置多久自动关闭连接(s) | 0 | 整数 | yes |
tcp-keepalive | 检查tcp连接活性的周期(s) | 300 | 整数 | yes |
安全配置
安全 | ||||
名称 | 说明 | 默认值 | 可选值 | 支持热配置 |
requirepass | 密码 | 空 | 自定义 | yes |
bind | 绑定ip | 空 | 自定义 | no |
masterauth | 从节点配置主节点的密码 | 127.0.0.1 | 主节点的密码 | yes |