redis.conf 配置档详解

最近对 Redis 数据库非常感兴趣,所以想详细整理下配置档中的参数以及意义! 下面开始

基本配置

redis 对单位不区分大小写,所以1kb = 1KB =1kB
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes

redis 默认不作为守护程序在后台运行,如果需要,则选择 yes
daemonize yes

redis 运行时pid文件保存在 /var/run/redis/redis.pid ,当然你也可以自己指定
pidfile /var/run/redis/redis.pid

redis 默认监听端口为 6379 ,如果设置为 0 ,则 redis 不会监听一个套接字
port 6379

redis 所绑定的 ip 地址
bind 10.1.0.100

redis 关闭连接后,客户端空闲 N 秒,0禁用
timeout 0

redis 日志级别定义,有下面几个选项
debug : 几乎用不到
verbose : 输出很多无用信息
notice : 默认定义,输出一些提示信息
warning : 输出重大错误信息
loglevel notice

redis 日志位置
logfile /var/log/redis/redis.log

redis 数据库个数定义
databases 16


SNAPSHOTTING

redis 保存快照定义 (RDB 持久化)
save ‘seconds’ ‘changes’
save 900 1 #900秒(15分钟)如果至少有1个关键的变化
save 300 10 #300秒(5分钟)如果至少10键改变
save 60 10000 #60秒后如果至少10000键改变

redis RDB 压缩
如果你想节约CPU,那么则选择 no,默认开启,并且你有可压缩的值或键,那么会更大!
rdbcompression yes

redis RDB 文件名
dbfilename dump.rdb

redis 存放 dump.rdb 的目录
dir /var/lib/redis/


REPLICATION

redis 主从复制区,指定一个 redis 服务器作为slave。那么该 redis 服务器则是其他 redis 服务器的 slave。

redis 从服务器指定
slaveof “masterip” “masterport”

redis master服务设置了密码保护时,slave服务连接master的密码
masterauth “master-password”

redis master slave 设置
当 slave 和 master 之间的连接断开或 slave 正在于 master 同步时,如果有 slave 请求,当 slave-serve-stale-data 配置为 yes时 , slave 可以相应客户端请求;当为 no 时, slave 将要响应错误,默认是 yes
slave-serve-stale-data yes

slave 会按照一个时间间隔向 master 发送 PINGs. 可以通过 repl-ping-slave-period 设置这个时间间隔,默认是 10 秒
repl-ping-slave-period 10

设置主库批量数据传输时间或者 ping 回复时间间隔,默认值是 60 秒,该值必须大于 repl-ping-slave-period 的值。
repl-timeout 60


SECURITY

设置客户端连接后进行任何其他指定前需要使用的密码。
警告:因为 redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行 150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解
requirepass foobared


LIMITS

设置同一时间最大客户端连接数,默认无限制, Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0 ,表示不作限制。

当客户端连接数到达限制时, Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息
maxclients 10000

maxmemory 的设置比较适合于把 redis 当作于类似 memcached 的缓存来使用,而不适合当做一个真实的 DB 。当把 Redis 当做一个真实的数据库使用的时候,内存使用将是一个很大的开销。
maxmemory “bytes”

当内存达到最大值的时候 Redis 会选择删除哪些数据?有五种方式可供选择。
注意:对于上面的策略,如果没有合适的 key 可以移除,当写的时候 Redis 会返回一个错误。默认是 : volatile-lru。
maxmemory-policy volatile-lru

volatile-lru -> 利用 LRU 算法移除设置过过期时间的 key (LRU: 最近使用 Least RecentlyUsed )
allkeys-lru -> 利用 LRU 算法移除任何 key
volatile-random -> 移除设置过过期时间的随机 key
allkeys->random -> remove a randomkey, any key
volatile-ttl -> 移除即将过期的 key (minor TTL)
noeviction -> 不移除任何 key ,只是返回一个写错误

Redis 默认的会选择 3 个样本进行检测,你可以通过 maxmemory-samples 进行设置
maxmemory-samples 3


APPEND ONLY MODE

默认情况下, redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。

所以 redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。

开启 append only 模式之后, redis 会把所接收到的每一次写操作请求都追加到 appendonly.aof 文件中,当 redis 重新启动时,会从该文件恢复出之前的状态。

但是这样会造成 appendonly.aof 文件过大,所以 redis 还支持了 BGREWRITEAOF 指令,对 appendonly.aof 进行重新整理。

你可以同时开启 asynchronous dumps 和 AOF
appendonly no

AOF 文件名称 ( 默认 : “appendonly.aof”)
appendfilename appendonly.aof

Redis 支持三种同步 AOF 文件的策略 :
no: 不进行同步,系统去操作 . Faster.
always: always 表示每次有写操作都进行同步 . Slow, Safest.
everysec: 表示对写操作进行累积,每秒同步一次 . Compromise.

默认是 “everysec” ,按照速度和安全折中这是最好的。
如果想让 Redis 能更高效的运行,你也可以设置为 “no” ,让操作系统决定什么时候去执行,或者相反想让数据更安全你也可以设置为 “always”,如果不确定就用 “everysec”.
appendfsync everysec
appendfsync always
appendfsync no

AOF 策略设置为 always 或者 everysec 时,后台处理进程 ( 后台保存或者 AOF 日志重写 ) 会执行大量的 I/O 操作,在某些 Linux 配置中会阻止过长的 fsync() 请求。注意现在没有任何修复,即使 fsync 在另外一个线程进行处理,为了减缓这个问题,可以设置下面这个参数 no-appendfsync-on-rewrite
no-appendfsync-on-rewrite no

AOF 自动重写
当 AOF 文件增长到一定大小的时候 Redis 能够调用 BGREWRITEAOF 对日志文件进行重写。

它是这样工作的: Redis 会记住上次进行些日志后文件的大小 ( 如果从开机以来还没进行过重写,那日子大小在开机的时候确定 ) 基础大小会同现在的大小进行比较。如果现在的大小比基础大小大制定的百分比,重写功能将启动; 同时需要指定一个最小大小用于 AOF 重写,这个用于阻止即使文件很小但是增长幅度很大也去重写 AOF 文件的情况,设置 percentage 为 0 就关闭这个特性
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb


SLOW LOG

Redis Slow Log 记录超过特定执行时间的命令。执行时间不包括 I/O 计算比如连接客户端,返回结果等,只是命令执行时间可以通过两个参数设置 slow log :一个是告诉 Redis 执行超过多少时间被记录的参数 slowlog-log-slower-than( 微秒 ) ,另一个是 slow log 的长度。当一个新命令被记录的时候最早的命令将被从队列中移除。
下面的时间以微妙为单位,因此 1000000 代表一秒。
注意指定一个负数将关闭慢日志,而设置为 0 将强制每个命令都会记录
slowlog-log-slower-than 10000

配置记录慢查询的最大条数,对日志长度没有限制,只是要注意它会消耗内存,可以通过 SLOWLOG RESET 回收被慢日志消耗的内存,推荐使用默认值 128 ,当慢日志超过 128 时,最先进入队列的记录会被踢出。
slowlog-max-len 1024


高级配置

当 hash 中包含超过指定元素个数并且最大的元素没有超过临界时,hash 将以一种特殊的编码方式(大大减少内存使用)来存储,这里可以设置这两个临界值,Redis Hash 对应 Value 内部实际就是一个 HashMap ,实际这里会有 2 种不同实现,这个 Hash 的成员比较少时 Redis 为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的 HashMap 结构,对应的valueredisObject 的 encoding 为 zipmap。
当成员数量增大时会自动转成真正的 HashMap, 此时 encoding 为 ht 。
hash-max-zipmap-entries 512
hash-max-zipmap-value 64

和 Hash 一样,多个小的 list 以特定的方式编码来节省空间。list 数据类型节点值大小小于多少字节会采用紧凑存储格式。
list-max-ziplist-entries 512
list-max-ziplist-value 64

set 数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储。
set-max-intset-entries 512

和 hashe 和 list 一样 , 排序的 set 在指定的长度内以指定编码方式存储以节省空间,zsort 数据类型节点值大小小于多少字节会采用紧凑存储格式。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

Redis 将在每 100 毫秒时使用 1 毫秒的 CPU 时间来对 redis 的 hash 表进行重新 hash ,可以降低内存的使用。当你的使用场景中,有非常严格的实时性需要,不能够接受 Redis 时不时的对请求有 2 毫秒的延迟的话,把这项配置为 no 。

如果没有这么严格的实时性要求,可以设置为 yes ,以便能够尽可能快的释放内存
activerehashing yes

时间: 2024-09-11 19:46:27

redis.conf 配置档详解的相关文章

nagios redis监控配置步骤详解

实际环境如下: 10.0.0.167: 6380 10.0.0.165: 6379/6380 1. 下载redis监控插件 下载链接地址: http://exchange.nagios.org/directory/Plugins/Databases/check_redis-2Epl/details https://github.com/willixix/WL-NagiosPlugins 2. 定义监控命令 在commands.cfg添加下面内容: # check redis define com

php5.3.10的安装配置步骤详解

在linux中php安装配置与windows中有不小的区别了,在linux中几乎都是代码形式了,下面我们一起来看看php5.3.10的安装配置步骤详解,希望下文可帮助到各位. 下面以最新的php-5.3.10为例进行安装. wget http://cn.php.net/distributions/php-5.3.10.tar.gz tar -zxvf php-5.3.10.tar.gz cd php-5.3.10 ./configure --prefix=/usr/local/php --wit

php.ini中的php-5.2.0配置指令详解_php技巧

;; 关于php.ini ;;  这个文件必须命名为'php.ini'并放置在httpd.conf中的PHPIniDir指令指定的目录中. ; 最新版本的php.ini可以在下面两个位置查看: ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-recommended?view=co ; http://cvs.php.net/viewvc.cgi/php-src/php.ini-dist?view=co ;;;;;;;;;;;; ;; 语法 ;; ;;

Domino与AD集成测试文档详解

目前,测试服务器环境已集成成功.AD负责对账户进行控制,FTP的目录访问权限是通过windows系统的NTFS文件系统配合Server-U进行控制,Domino负责提供邮件服务. AD中按照公司的组织结构进行建立,其中组织结构名称全部为中文拼音.账户名称同意按照姓的全称名字第一个字母组成,默认密码全部为123456. FTP中的目录按照部门的名称来命名,权限是本部门的员工对此目录具有所有权限,其他用户无权限访问此目录.一个公共目录,权限为公司内部员工都可以访问,但不可以修改. 一.AD的搭建与配

Apache防DDOS模块mod_evasive安装和配置方法详解_Linux

一.mod_evasive 介绍mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块.对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块.虽然并不能完全防御DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力.如配合iptables.硬件防火墙等防火墙设备配合使用,可能有更好的效果.mod_evasive 的官方地址: http://www.zdziarski.com/二.mod_evasive 工作原理Apache模块mo

YUM解决RPM包安装依赖关系及yum工具介绍本地源配置方法详解_Linux

1.背景概述 在实际生产环境下,对于在linux系统上安装rpm包,主要面临两个实际的问题 1)安装rpm包过程中,不断涌现的依赖关系问题,导致需要按照提示或者查询资料,手工安装更多的包 2)由于内外网的隔离,无法连接外网的yum源 鉴于上述因此,本文将详细介绍,yum工具以及配置本地yum源的方法 2.yum工具简介 •yum工具作为rpm包的软件管理器,可以进行rpm包的安装.升级以及删除等日常管理工作,而且对于rpm包之间的依赖关系可以自动分析,大大简化了rpm包的维护成本. •yum工具

Linux网络配置图文详解

在安装完Linux之后,要进行一些简单的配置才能正常使用,比如网络.防火墙.安全设置等,还要安装一些必要的软件.只有进行这一系列之后的配置之后才算是能正常使用.   网络是最重要的功能之一,因此一定要对它进行配置,否则就会不不了网 动态网络 动态网络可以使用DHCP服务器分配的IP地址.输入vi /etc/sysconfig/network-scripts/ifcfg-eth0会出现以下画面 编辑Linux网卡属性 在CentOS刚装好时,它是默认使用DHCP的,但网卡没有启用.也就是要在ONB

linux网站服务Apache的安装与配置方法详解_Linux

这篇文章介绍下linux网站服务apache的安装与配置方法,包括挂载光盘,安装http服务,管理httpd服务,httpd的配置文件几大部分.具体详情可以参考下文. 1.挂载光盘 自己习惯将光盘挂载在/media/cdrom目录,在做本地yum源的时候此目录为默认目录之一 [root@localhost /]# mount /dev/cdrom /media/cdrom/ 2.安装httpd服务(如果本地yum源已经搭建好就直接进行这一步,没有的话需要搭建,前面的文章有提到yum源的搭建) [

Cocos2d-x win7 + vs2010 配置图文详解

Cocos2d-x win7 + vs2010 配置图文详解(亲测)   下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为cocos2d-1.01-x-0.9.1,具体下载位置如下图: 下载完之后,解压到当前文件夹.我把下载的程序放在F盘根目录,解压完毕之后,双击打开文件夹,看看里面有什么东西,红圈部分就是我们要安装使用的文件: 接下来,我们正式安装cocos2d-x到win7中去. 首先,双击上图中的cocos2d-w