Redis数据库安装与配置文件详解
第1章 redis简介
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
第2章 Redis与Memcached的对比
Memcached |
Redis |
|
类型 |
Key-velue数据库 |
Key-value数据库 |
过期策略 |
支持 |
支持 |
数据类型 |
单一数据类型 |
多种数据类型 |
持久化 |
不支持 |
支持 |
主从复制 |
不支持 |
支持 |
虚拟内存 |
不支持 |
支持(不建议使用,弃用) |
第3章 redis安装
3.1 yum方式安装
q 获取aliyun镜像源
wget http://mirrors.aliyun.com/repo/epel-6.repo
q yum方式安装redis
yum -y install redis
q 查看yum安装的组件
[root@test3 yum.repos.d]# rpm -ql redis /etc/logrotate.d/redis /etc/rc.d/init.d/redis /etc/rc.d/init.d/redis-sentinel /etc/redis-sentinel.conf /etc/redis.conf /etc/security/limits.d/95-redis.conf /usr/bin/redis-benchmark /usr/bin/redis-check-aof /usr/bin/redis-check-rdb /usr/bin/redis-cli /usr/bin/redis-sentinel /usr/bin/redis-server /usr/libexec/redis-shutdown /usr/share/doc/redis-3.2.11 /usr/share/doc/redis-3.2.11/00-RELEASENOTES /usr/share/doc/redis-3.2.11/BUGS /usr/share/doc/redis-3.2.11/CONTRIBUTING /usr/share/doc/redis-3.2.11/COPYING /usr/share/doc/redis-3.2.11/MANIFESTO /usr/share/doc/redis-3.2.11/README.md /usr/share/man/man1/redis-benchmark.1.gz /usr/share/man/man1/redis-check-aof.1.gz /usr/share/man/man1/redis-check-rdb.1.gz /usr/share/man/man1/redis-cli.1.gz /usr/share/man/man1/redis-sentinel.1.gz /usr/share/man/man1/redis-server.1.gz /usr/share/man/man5/redis-sentinel.conf.5.gz /usr/share/man/man5/redis.conf.5.gz /var/lib/redis /var/log/redis /var/run/redis
3.2 编译安装
3.2.1 下载Redis安装包
wget http://download.redis.io/releases/redis-3.2.11.tar.gz
3.2.2 编译安装
tar xf redis-3.2.11.tar.gz cd redis-3.2.11 make make install
q 拷贝执行命令到/usr/bin目录
cp src/redis-benchmark /usr/bin/ cp src/redis-check-aof /usr/bin/ cp src/redis-check-rdb /usr/bin/ cp src/redis-cli /usr/bin/ cp src/redis-sentinel /usr/bin/ cp src/redis-server /usr/bin/
3.3 redis默认配置文件详解
[root@test3 etc]# egrep -v "^$|#" redis.conf
3.3.1 网络配置
1) bind 127.0.0.1
#<==绑定服务器的IP地址,强烈建议修改为服务器的对外IP,如192.168.1.10
2) protected-mode yes
#<==启用保护模式,在没有配置bind地址和密码的时候,只允许127.0.0.1和::1,或者是unix的socket来连接
3) port 6379
#<==redis接收连接的端口,默认为6379
4) tcp-backlog 511
#<==tcp监听的积压,在高频率环境中需要高积压来避免客户端的慢访问问题。
5) timeout 0
#<==客户端空闲N秒后关闭连接(0表示禁用)
6) tcp-keepalive 300
#<==tcp检测存活的时间间隔
3.3.2 一般配置
7) daemonize no
#<==是否是启动后台运行模式,默认为no,强烈建议设置为yes
8) supervised no
#<==通过upstart和systemd启动redis时的监督策略,0表示禁止
9) pidfile /var/run/redis_6379.pid
#<==deamon模式运行时的PID存放文件
10) loglevel notice
#<==打印日志级别,分别为debug、verbose、notice、warning
11) logfile /var/log/redis/redis.log
#<==指定日志文件名称
12) databases 16
#<==设置数据库数量,默认数据库为DB0,0-15,共16个,可以使用select dbid选择数据库
3.3.3 快照配置
13) save 900 1
14) save 300 10
15) save 60 10000
#<==设置数据保存到硬盘RDB文件的保存点,例如save 900 1表示如果在900秒以内有个一key有变动,则触发一次刷新数据到硬盘的RDB文件中。如果不想保留数据到硬盘,则可以将以上三个参数替换为save ""
16) stop-writes-on-bgsave-error yes
#<==设置如果后台保存失败,那么redis将停止数据的写入。
17) rdbcompression yes
#<==转储.rdb数据库时使用LZF压缩字符串对象。
18) rdbchecksum yes
#<==在RDB文件末尾的校验,会降低10%的性能,如果想获取最佳性能,则可以关闭此选项
19) dbfilename dump.rdb
#<==DB文件的备份名名
20) dir /var/lib/redis
#<==指定工作目录,rdb存放的目录。如果没有指定,则默认在运行命令的路径下。
3.3.4 主从配置
21) slave-serve-stale-data yes
#<==与master失联的应对方式,yes时会回复客户端旧的数据;no会提示报错“SYNC with master in progress”
22) slave-read-only yes
#<==设置slave服务器只读
23) repl-diskless-sync no
#<==是否启动无盘同步方式,即使用socket做同步策略而不会使用到disk。(磁盘IO慢,且带宽足够大时可选择采用。但该功能目前还不处实验状态,建议选择关闭)
24) repl-diskless-sync-delay 5
#<==当repl-diskless-sync设置为yes时,设置传输前的等待时间。要禁用该功能可配置为0。
25) repl-disable-tcp-nodelay no
#<==tcp延时的优化,默认为no。在非常高的网络trafiic条件或者主备距离远时,可开启为yes。
26) slave-priority 100
#<==从节点的优先级。数字越低级别越高,0表示不会被提升带master。
3.3.5 追加模式配置
27) appendonly no
#<==是否开启AOF追加功能,yes表示开启,建议
28) appendfilename "appendonly.aof"
#<==AOF文件名,默认为appendonly.aof
29) appendfsync everysec
#<==写入AOF文件的频率。有no(操作系统需要时刷新,速度快)、always(每追加一条就会刷新,安全)、everysec(每秒刷新一次)三种选择,默认为everysec
30) no-appendfsync-on-rewrite no
#<==缓解AOF写入阻塞,默认为no。如果有延迟问题,可以选择yes
31) auto-aof-rewrite-percentage 100
#<==触发自动重写所占的百分比,0表示禁用自动重写功能
32) auto-aof-rewrite-min-size 64mb
#<==指定自动重写AOF文件的最小大小
33) aof-load-truncated yes
#<==是否加载被截断(reids出问题时AOF文件可能被截断)的AOF日志。设置yes表示加载被截断的AOF文件,并通过日志告知用户;如果设置为no,则redis拒绝启动,需要运行redis-check-aof才能启动服务。
3.3.6 LUA脚本配置
34) lua-time-limit 5000
#<==以毫秒为单位的LUA脚本最长执行时间,0或者负数表示不限制
3.3.7 慢日志配置
35) slowlog-log-slower-than 10000
#<==记录执行命令的超时时间,单位为微秒。负数表示禁用该功能,0表示强制记录每条命令。
36) slowlog-max-len 128
#<==慢日志的长度,注意会消耗内存,可以使用SLOWLOG RESET回收慢日志所使用的内存
3.3.8 延时监视配置
37) latency-monitor-threshold 0
#<==设置监视的执行命令时间,超过该值的才会被记录。0表示关闭该功能。
3.3.9 事件通知配置
38) notify-keyspace-events ""
#<==一般不会用到此功能,而且会带来额外的开销
3.3.10 高级配置
39) hash-max-ziplist-entries 512
#<==hash阈值最大的条目数
40) hash-max-ziplist-value 64
41) list-max-ziplist-size -2
#<==每个内部列表节点允许的条目数,-2表示8KB。(-5表示64KB;-4表示32KB;-3表示-16KB;-1表示4KB)
42) list-compress-depth 0
#<==列表的压缩深度,0表示不压缩
43) set-max-intset-entries 512
#<==集合大小的限制
44) zset-max-ziplist-entries 128
#<==有序集合特殊编码格式最大元素限制
45) zset-max-ziplist-value 64
#<==有序集合特殊编码格式最大长度限制
46) hll-sparse-max-bytes 3000
#<==HyperLogLog最大字节数的限制
47) activerehashing yes
#<==开启主动hash功能,可以尽可能快释放内存。如果有严格的延迟要求,可以设置为no。
48) client-output-buffer-limit normal 0 0 0
49) client-output-buffer-limit slave 256mb 64mb 60
50) client-output-buffer-limit pubsub 32mb 8mb 60
#<==格式为client-output-buffer-limit,表示如果达到硬限制,立即断连;达到软限制并持续之后的秒数,断连。默认普通客户端不受限制,因为不会在没有询问的情况下接收数据。
51) hz 10
#<==设置Redis检查任务的频率,范围为1-500,最好不要超过100。
52) aof-rewrite-incremental-fsync yes
#<==没生成32MB数据,AOF文件将被fsync-ed,避免延迟尖峰。
3.4 redis启停
3.4.1 yum安装的启停
/etc/init.d/redis start #<==启动Redis服务 /etc/init.d/redis stop #<==停止Redis服务
3.4.2 编译安装的启停
/usr/bin/redis-server /opt/redis/redis.conf #<==启动Redis服务 redis-cli -h 10.0.0.16 -p 6379 shutdown #<==停止Redis服务