Redis数据库安装与配置文件详解

第1章 redis简介

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings 散列(hashes 列表(lists 集合(sets 有序集合(sorted sets 与范围查询, bitmaps hyperloglogs  地理空间(geospatial 索引半径查询。 Redis 内置了 复制(replicationLUA脚本(Lua scripting LRU驱动事件(LRU eviction事务(transactions 和不同级别的 磁盘持久化(persistence 并通过 Redis哨兵(Sentinel和自动 分区(Cluster提供高可用性(high availability)。

第2章 RedisMemcached的对比


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服务