Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Redis配置文件redis.conf详解

Redis配置文件redis.conf详解

作者头像
共饮一杯无
发布于 2022-11-28 07:50:11
发布于 2022-11-28 07:50:11
9550
举报

文章目录

常用配置

Redis支持很多的参数配置,但都有默认值daemonize默认情况下,redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为yes。 protected-mode保护模式,protected-mode设置为yes的情况下,为了我们的应用服务可以正常访问Redis,我们需要设置Redis的bind参数或者密码参数requirepass。 bind指定 Redis只接收来自于该IP地址的请求,如果设置成0.0.0.0表示接收所有ip请求,不建议使用。 port监听端口,默认为6379。 databases设置数据库的个数,默认使用的数据库是0。 save设置Redis进行数据库镜像备份的频率。

#如果900秒内至少1个key发生变化(新增、修改和删除),则重写rdb文件; save 900 1 #如果每300秒内至少10个key发生变化(新增、修改和删除),则重写rdb文件; save 300 10 #如果每60秒内至少10000个key发生变化(新增、修改和删除),则重写rdb文件。 save 60 10000

dbfilename镜像备份文件的文件名。 dir数据库镜像备份的文件放置的路径。 requirepass设置客户端连接后进行任何其他指定前需要使用的密码。 maxclients限制同时连接的客户数量。 maxmemory设置redis 能够使用的最大内存。 logfile 日志文件名。

进阶配置

stop-writes-on-bgsave-error 持久化如果出错,是否还需要继续工作。 loglevel 指定日志记录级别。

Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose debug 记录很多信息,用于开发和测试 varbose 有用的信息,不像debug会记录那么多 notice 普通的verbose,常用于生产环境 warning 只有非常重要或者严重的信息会记录到日志

timeout设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接,0是关闭此设置

主从复制

slaveof <masterip> <masterport>主从复制。设置该数据库为其他数据库的从数据库。设置当本机为slave服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步。这里永久性的设置主机IP(设置后自己视为从节点) masterauth <master-password>当master服务设置了密码保护时(用requirepass制定的密码)slave服务连接master的密码。 slave-serve-stale-data当从库同主机失去连接或者复制正在进行,从库有两种运行方式:

  1. 如果slave-serve-stale-data设置为yes(默认设置),从库会继续相应客户端的请求
  2. 如果slave-serve-stale-data是指为no,出去INFO和SLAVOF命令之外的任何请求都会返回一个错误"SYNC with master in progress"

repl-ping-slave-period从库会按照一个时间间隔向主库发送PINGs.可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒。 总结就是上面间隔多少秒发送一次检测存活的pingPong信号,下面repl-timeout就是判定发送这个信号后的返回超时时间。 repl-timeout 设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒。一定要确保repl-timeout大于repl-ping-slave-period。

安全

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

在一个共享环境下可以重命名相对危险的命令。比如把CONFIG重名为一个不容易猜测的字符。 举例: rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 如果想删除一个命令,直接把它重命名为一个空字符""即可,如下: rename-command CONFIG “”

限制 CLIENTS

maxclients限制同时连接的客户数量。 maxmemory设置redis 能够使用的最大内存。 maxmemory-policy 内存达到上限的处理策略,有以下几种策略

volatile-lru :利用 LRU 算法移除设置过过期时间的 key 。 volatile-random :随机移除设置过过期时间的 key 。 volatile-ttl :移除即将过期的 key ,根据最近过期时间来删除(辅以 TTL ) allkeys-lru :利用 LRU 算法移除任何 key 。 allkeys-random :随机移除任何 key 。 noeviction :不移除任何 key ,只是返回一个写错误。 默认是:maxmemory-policy volatile-lru LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法(为了节省内存),随意你可以选择样本大小进行检测。

RDB模式相关配置

rdbcompression存储至本地数据库时(持久化到rdb文件)是否压缩数据,需要消耗一些cpu的资源,默认为yes rdbchecksum保存rdb文件的时候,进行错误的检查校验。 dirrdb文件保存的目录,如:/www/server/redis/ dbfilenameRDB后,本地持久化数据库文件名,默认值为dump.rdb(持久化的数据都会保存在这个文件里然后准备刷盘)

AOF模式 appendonly配置

appendonly 默认是no,不开启AOF模式的,默认是使用RDB方式持久化的,在大部分使用的情况下,RDB完全够用了 appendfilename 持久化的文件的名字,如:“appendonly.aof” appendfsync同步策略。

#appendfsync always #每次修改都会 sync 消耗性能 appendfsync everysec #每秒执一次 sync,可能会丢失这1s的数据 #appendfsync no #不执行 sync 这个时候操作系统自己同步数据,数据最快

AOF策略设置为always或者everysec时,后台处理进程(后台保存或者AOF日志重写)会执行大量的I/O操作。在某些Linux配置中会阻止过长的fsync()请求。注意现在没有任何修复,即使fsync在另外一个线程进行处理。为了减缓这个问题,可以设置下面这个参数no-appendfsync-on-rewrite。 AOF 自动重写,当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 它是这样工作的:Redis会记住上次进行些日志后文件的大小(如果从开机以来还没进行过重写,那日子大小在开机的时候确定) 基础大小会同现在的大小进行比较。如果现在的大小比基础大小大制定的百分比,重写功能将启动 同时需要指定一个最小大小用于AOF重写,这个用于阻止即使文件很小但是增长幅度很大也去重写AOF文件的情况 设置 percentage 为0就关闭这个特性 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb

slowlog

slowlog-log-slower-thanRedis Slow Log 记录超过特定执行时间的命令。执行时间不包括I/O计算比如连接客户端,返回结果等,只是命令执行时间。可以通过两个参数设置slow log:一个是告诉Redis执行超过多少时间被记录的参数slowlog-log-slower-than(微秒),另一个是slow log 的长度。当一个新命令被记录的时候最早的命令将被从队列中移除 。注意制定一个负数将关闭慢日志,而设置为0将强制每个命令都会记录slowlog-max-len对日志长度没有限制,只是要注意它会消耗内存,可以通过 SLOWLOG RESET 回收被慢日志消耗的内存。

INCLUDES

include指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使加粗样式用同一份配置文件,而同时各个实例又拥有自己的特定配置文件,如:

include /path/to/local.conf include /path/to/other.conf

vm相关

vm-enabled指定是否启用虚拟内存机制,默认值为no,简单介绍一下,VM机制将数据分页存放,由redis将访问量较小的页即冷数据 swap到磁盘上,访问多的页面由磁盘自动换出到内存中。 vm-swap-file虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个redis实例共享。 vm-max-memory将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为 0。 vm-page-sizeredis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是根据存储的数据大小来设定的,作者建议如果储存很多小对象,page大小最好设置为32或者64bytes;如果存储很多大对象,则可以使用更大的page,如果不确定,就使用默认值。 vm-pages设置swap文件中page数量,由于页表(一种表示页面空闲或使用的bitmap)是放在内存中的,在磁盘上每8个pages将消耗1byte的内存: vm-max-threads设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成长时间的延迟。默认值为4。 glueoutputbuf yes设置在客户端应答时,是否把较小的包含并为一个包发送,默认为开启:

其他配置

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

hash-max-zipmap-entries 512 hash-max-zipmap-value 64

list数据类型多少节点以下会采用去指针的紧凑存储格式。 list数据类型节点值大小小于多少字节会采用紧凑存储格式。

list-max-ziplist-entries 512 list-max-ziplist-value 64

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

set-max-intset-entries 512

zsort数据类型多少节点以下会采用去指针的紧凑存储格式。 zsort数据类型节点值大小小于多少字节会采用紧凑存储格式。

zset-max-ziplist-entries 128 zset-max-ziplist-value 64

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

activerehashing yes

本文内容到此结束了, 如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。 如有错误❌疑问💬欢迎各位大佬指出。 主页共饮一杯无的博客汇总👨‍💻 保持热爱,奔赴下一场山海。🏃🏃🏃

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
redis.conf配置文件说明
# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 内存配置大小写是一样的.比如 1gb 1Gb 1GB 1gB
HUC思梦
2020/09/03
5730
【redis从入门到上线(1)】- 初识redis及部署
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能。
一条老狗
2019/12/26
3990
redis-sentinel主从复制高可用
本实验是在测试环境下,考虑到学生机器较弱,因此只准备一台linux服务器用作环境!!
超蛋lhy
2019/02/25
7460
redis.conf中文版(基于2.4)
# 注意单位问题:当需要设置内存大小的时候,可以使用类似1k、5GB、4M这样的常见格式: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 单位是大小写不敏感的,所以1GB 1Gb 1gB的写法都是完全一样的。
星哥玩云
2022/06/29
4240
redis.conf配置文件详解
daemonize no 是否以后台进程启动 databases 16 创建database的数量(默认选中的是database 0)
benny
2018/07/26
5970
【redis从入门到上线(2)】- redis配置要点
这次我们讲讲redis的一些配置要点,包括日志,持久化,主备,数据压缩,内存分配等,以及一些坑,简单的配置就不说了,可以去看官方文档。
一条老狗
2019/12/26
6680
redis配置文件
查看配置文件:https://raw.githubusercontent.com/antirez/redis/5.0.3/redis.conf
chenchenchen
2019/09/02
1.1K0
redis的配置文件
redis.windows.conf # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 单位是不区分大小写的,你写
Yiiven
2022/12/15
4270
Redis(2.8版本)配置文件参数中文详解
#daemonize no 默认情况下, redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes daemonize yes # 当 redis 在后台运行的时候, Redis 默认会把 pid 文件放在 /var/run/redis.pid ,你可以配置到其他地址。 # 当运行多个 redis 服务时,需要指定不同的 pid 文件和端口 pidfile /var/run/redis_6379.pid # 指定 redis 运行的端口,默认是 6379 port 6379 #
小小科
2018/05/02
1.2K0
redis 学习指南
http://www.cnblogs.com/hoojo/p/4466024.html
bear_fish
2018/09/20
9090
redis 学习指南
Redis 配置文件详解[通俗易懂]
  redis 是一款开源的、高性能的键-值存储(key-value store),和 memcached 类似,redis 常被称作是一款 key-value 内存存储系统或者内存数据库,同时由于它支持丰富的数据结构,又被称为一种数据结构服务器(data structure server)。
全栈程序员站长
2022/07/01
6690
redis见解
http://blog.csdn.net/zhiguozhu/article/details/50517527 Redis 原生session与redis中的session区别 原生session在服务器上是以文件的形式存储的,所以其有一些磁盘io上的缺点
江湖前辈黄药师
2018/08/27
6760
redis的安装与使用
 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统。和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,redis支持各种不同方式的排序。Redis数据都是缓存在计算机内存中,并且会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
人生不如戏
2019/02/13
6080
redis3.2启动配置文件redis.conf说明
# 默认redis不是以后台进程的方式启动,如果需要在后台运行,需要将这个值设置成yes # 以后台方式启动的时候,redis会写入默认的进程文件/var/run/redis.pid daemonize yes # redis启动的进程路径 pidfile/var/run/redis.pid # 启动进程端口号,这里最好不要使用默认的6379,容易被攻击 port 7179 tcp-backlog 511 # 配置redis监听到的ip地址,可
JavaEdge
2018/05/16
9800
Redis入坟(番外篇)配置文件redis.conf,解析每个参数的含义
# 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 对大小写不敏感 # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # 引入其他文件 # include /path/to/local.conf # include /path/to/other.c
源码之路
2020/09/04
6010
redis安装配置
redis安装配置文档 # 非常详细redis的介绍 http://blog.chinaunix.net/uid-790245-id-3766268.html wget http://redis.googlecode.com/files/redis-2.6.10.tar.gz tar zxvf redis-2.6.10.tar.gz -C /usr/local/ cd /usr/local/redis-2.6.10 make make install # make命令执行完成后,会在src目录下生成5个可执
程序员同行者
2018/07/02
9290
redis.conf 7.0 配置和原理全解,生产王者必备
我是 Redis, 当程序员用指令 ./redis-server /path/to/redis.conf 把我启动的时候,第一个参数必须是redis.conf 文件的路径。
码哥字节
2023/01/04
3.6K0
Redis 配置文件redis.conf 示例详解
# 注意单位: 当需要配置内存大小时, 可能需要指定像1k,5GB,4M等常见格式 # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 单位是对大小写不敏感的 1GB 1Gb 1gB 是相同的。
星哥玩云
2022/08/18
7400
redis全配置文件解析
🔍 本文将深入解析Redis的全配置文件,详细介绍核心配置项、日志相关配置、持久化配置(RDB和AOF)、主从同步相关配置以及慢查询相关配置,为读者提供全面的Redis配置信息。
默 语
2024/11/20
3300
windows平台下redis安装及配置文件介绍
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
写代码的猿
2019/04/11
8990
windows平台下redis安装及配置文件介绍
相关推荐
redis.conf配置文件说明
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档