最近对 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

redis.conf 配置档详解相关推荐

  1. redis 主从配置参数详解

    转:https://www.cnblogs.com/chenmh/p/5121849.html#undefined 安装redis 下载redis wget http://download.redis ...

  2. Redis常用配置参数详解及查看修改命令

    目录 Redis常用配置参数 Redis配置参数查看命令 语法 举例 说明: Redis配置参数修改命令 语法 举例 说明: Redis常用配置参数 序号 配置项 说明 1 daemonize no ...

  3. Redis.conf redis6配置文件详解

    redis版本为:6.0.5 配置文件地址 mac&linux: usr/local/etc 配置文件原文地址: https://raw.githubusercontent.com/redis ...

  4. Redis基础及原理详解

    Redis基础及原理详解 前言:以下是最近学习redis的一些笔记总结,文中如有不当的地方欢迎批评指正,重在记录与学习,笔芯~~ Nosql概述 演进历史 单机mysql Memcached(缓存)+ ...

  5. Redis 2021最新 超详解 教程(狂神笔记+个人总结+代码+截图)

    文章目录 一.NoSQL 简介 1.数据库演化 2.为什么使用NoSQL 3.NoSQL特点 4.NoSQL分类 5.电商的数据存储 商品的基本信息 商品的描述.评论(文字较多) 图片 商品关键字(搜 ...

  6. Redis数据库教程——系统详解学习Redis全过程

    Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统:     Key-Value Store是当下比较流行的话题,尤其 ...

  7. Apache2 httpd.conf配置文件中文版详解

    Apache2 httpd.conf配置文件中文版详解 # # 基于 NCSA 服务的配置文件. # #这是Apache服务器主要配置文件. #它包含服务器的影响服务器运行的配置指令. #参见< ...

  8. Redis进阶实践之二十 Redis的配置文件使用详解

    一.引言 写完上一篇有关redis使用lua脚本的文章,就有意结束Redis这个系列的文章了,当然了,这里的结束只是我这个系列的结束,但是要学的东西还有很多.但是,好多天过去了,总是感觉好像还缺点什么 ...

  9. Redis设计与实现详解二:Redis数据库实现

    Redis设计与实现详解一:数据结构与对象 Redis设计与实现详解三:多机功能实现 Redis设计与实现详解四:其他单机功能 数据库 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态 ...

最新文章

  1. layer.open嵌入地址链接
  2. Google Adsense实用防踢技巧总结
  3. Linux下 制作本地yum安装源 openssl离线安装 gcc-c++离线安装
  4. hue 添加jar_在hue下配置jdbc驱动
  5. poj 1830 开关问题 高斯消元
  6. 一步步编写操作系统 34 内核利用bios中断获取物理内存大小
  7. Razor语法(三)
  8. android 数据存储之 Shared Preferences
  9. CSS:input输入框以及button按钮初始细节
  10. 学计算机如何防辐射,如何防辐射?学这五招_39健康网
  11. Unity 3D模型展示框架篇之项目整理
  12. Hive之数仓的分层及建模理论(3)
  13. python数据类型及转换
  14. el-input-number 失去焦点blur事件,
  15. 判断指定日期为当年第几天(Java实现)
  16. 设计模式案例分析与实现
  17. HTML Tab 选项卡
  18. 141. 环形链表(java实现)--2种解法(双指针,hahs)LeetCode
  19. File size exceeds....(文件大小超过限制处理)
  20. cmd关机别人电脑指令

热门文章

  1. php查询每个小时的数据,php – MySQL显示表中每小时的条目数
  2. Spark详解(十三):Spark Streaming 运行架构分析
  3. LetCode 15 三数之和
  4. 基于Java的RDMA高性能通信库(四):DaRPC
  5. c++求矩阵的秩_一篇文章搞定矩阵相关概念及意义通俗解释汇总
  6. Windows server2008修改远程桌面端口的方法
  7. ORACLE 字符串函数用法(转载)
  8. K - FatMouse and Cheese
  9. Lodop导出图片和打印机无关,测试是否有关
  10. CList 点击表头排序 (1)SortItems函数