redis的安装

Redis Install

Posted by zwtisme on September 24, 2018

介绍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

最大内存配置

内存淘汰算法:

最大内存
名称 说明 默认值 可选值 支持热配置
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

参考资料

官网

redis.conf

redis开发与运维