Redis配置项汇总(超级详细)

2023-05-16

文章目录

    • 查看配置项
    • 更改配置项
    • 更改配置文件
    • 配置项说明
    • 基本配置
    • 主从服务配置
    • 安全配置
    • 限制配置
    • AOF日志模式
    • 慢查询配置
    • 服务端命令
    • 客户端命令
    • 连接命令

在 Redis 的安装目录中有一个名为 redis.windows.conf 的配置文件,若在 Linux 中则为 redis.conf,本节以 Windows 系统为例对该文件进行讲解。

查看配置项

您可以使用 Redis 的CONFIG命令来查看或者更改 Redis 的配置信息。语法格式如下:

redis 127.0.0.1:6379> CONFIG GET 配置名称

示例如下,获取日志等级的配置项:

redis 127.0.0.1:6379> CONFIG GET loglevel 

输出结果如下:

1) "loglevel"
2) "notice"

通过使用*可以查看所有配置项,命令如下:

redis 127.0.0.1:6379> CONFIG GET *

输出结果:

1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) ""
5) "masterauth"
6) ""
7) "cluster-announce-ip"
8) ""
9) "unixsocket"
10) ""
11) "logfile"
12) ""
13) "pidfile"
14) ""
15) "slave-announce-ip"
16) ""
17) "replica-announce-ip"
18) ""
19) "maxmemory"
20) "0"
21) "proto-max-bulk-len"
22) "536870912"
23) "client-query-buffer-limit"
24) "1073741824"
25) "maxmemory-samples"
26) "5"
27) "lfu-log-factor"
28) "10"
29) "lfu-decay-time"
30) "1"
31) "timeout"
32) "0"
33) "active-defrag-threshold-lower"
34) "10"
35) "active-defrag-threshold-upper"
36) "100"
37) "active-defrag-ignore-bytes"
38) "104857600"
.....

如图所示:

img
图1:Redis配置项
注意:由于版本和操作系统的不同,配置项的数量会存在差异。

更改配置项

如果想要重新设置配置项,需要使用以下命令:

redis 127.0.0.1:6379> CONFIG SET 配置项名称 配置项参数值

示例如下:

127.0.0.1:6379> CONFIG SET loglevel "verbose"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "verbose"

Redis 的日志级别有以下四种:

1. debug:会打印出很多信息,适用于开发和测试阶段。
2. verbose(冗长的):包含很多不太有用的信息,但比debug简化一些。
3. notice:适用于生产模式。
4. warning : 警告信息。

Redis 默认设置为 verbose,开发测试阶段可以用 debug,生产模式一般选用 notice。

更改配置文件

Redis 某些配置信息无法直接通过命令修改,此时就需要修改配置文件,比如设置 Redis 允许远程连接的功能。配置文件修改如下:

1.注释掉本地IP地址,绑定要访问的外部IP
#bind 127.0.0.1 ::1
bind 192.168.1.1
2.关闭保护模式(把yes改为no)
protected-mode no
3.重启服务器,windows重启
redis-server --service-stop
redis-server --service-start
Linux重启
sudo /etc/init.d/redis-server restart

配置项说明

下表对一些配置项做了简单地说明:

配置项参数说明
daemonizeno/yes默认为 no,表示 Redis 不是以守护进程的方式运行,通过修改为 yes 启用守护进程。
pidfile文件路径当 Redis 以守护进程方式运行时,会把进程 pid 写入自定义的文件中。
port6379指定 Redis 监听端口,默认端口为 6379。
bind127.0.0.1绑定的主机地址。
timeout0客户端闲置多长秒后关闭连接,若指定为 0 ,表示不启用该功能。
loglevelnotice指定日志记录级别,支持四个级别:debug、verbose、notice、warning,默认为 notice。
logfilestdout日志记录方式,默认为标准输出。
databases16设置数据库的数量(0-15个)共16个,Redis 默认选择的是 0 库,可以使用 SELECT 命令来选择使用哪个数据库储存数据。
save[seconds] [changes]可以同时配置三种模式: save 900 1 save 300 10 save 60 10000表示在规定的时间内,执行了规定次数的写入或修改操作,Redis 就会将数据同步到指定的磁盘文件中。比如 900s 内做了一次更改,Redis 就会自动执行数据同步。
rdbcompressionyes/no当数据存储至本地数据库时是否要压缩数据,默认为 yes。
dbfilenamedump.rdb指定本地存储数据库的文件名,默认为 dump.rdb。
dir./指定本地数据库存放目录。
slaveof 主从复制配置选项当本机为 slave 服务时,设置 master 服务的 IP 地址及端口,在 Redis 启动时,它会自动与 master 主机进行数据同步。
requirepassfoobared 默认关闭密码配置项,默认关闭,用于设置 Redis 连接密码。如果配置了连接密码,客户端连接 Redis 时需要通过 密码认证。
maxmemory 最大内存限制配置项指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会尝试清除已到期或即将到期的 Key,当此方法处理 后,若仍然到达最大内存设置,将无法再进行写入操作,但可以进行读取操作。
appendfilenameappendonly.aof指定 AOF 持久化时保存数据的文件名,默认为 appendonly.aof。
glueoutputbufyes设置向客户端应答时,是否把较小的包合并为一个包发送,默认开启状态。

如果想全面了解配置选项,可以参考官方网站相关文档:点击前往。

本节对 Redis 的常用配置项和基本命令做简单的总结,您可以把本篇文章看做简版的速查手册。不过,需要注意的是由于 Redis 不同版本的差异,配置项会多少存在一些不同,但总体的来说,大同小异。

基本配置

port 6379  # 监听端口号,默认为6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
daemonize no #指定redis是否以守护线程的方式启动
databases 16 #创建database的数量,默认为0库

save 900 1 #刷新快照到硬盘中。必须满足下列三个要求之一才会触发,即900秒内至少有1个key发生变化。
save 300 10 #在300秒内至少10个key发生变化。
save 60 10000 #在60秒之内至少有10000个可以发生变化。

stop-writes-on-bgsave-error yes #后台存储错误并停止写入命令。
rdbcompression yes #使用LZF方式压缩rdb文件。如果你想节省一些CPU可设置成'no'
rdbchecksum yes #在存储、加载rdb文件时进行校验。
dbfilename dump.rdb #设置rdb文件名。
dir ./ #设置工作目录,rdb文件会自动存放在该目录。

主从服务配置

slaveof <masterip> <masterport> #将本机设为某台机器的从服务器
masterauth <master-password> #连接主服务器的密码
slave-serve-stale-data yes # 当主机和从机断开时或这正处于在复制过程中,是否让从服务器是应答请求
slave-read-only yes #设置从服务器为只读模式
repl-diskless-sync no  #是否同时向多个从服务器节点同时发数据
repl-diskless-sync-delay 5 #发送数据的延迟时间
repl-ping-slave-period 10 #主节点默认每隔 10 秒对从节点发送 ping 命令
repl-timeout 60 #主从服务器超时时间(超时认为断线了),要比period设置的时间大

#如果master不能再正常工作,那么会在多个slave中,选择优先值最小的一个slave提升为master,
#优先值为0表示不能提升为master,一般在哨兵sentinel环境中使用。
slave-priority 100 

#在slave和master同步后,后续的同步是否设置成TCP_NODELAY,设置成no,则redis master会立即发送同步数据,没有延迟
repl-disable-tcp-nodelay no 
min-slaves-to-write 3 #主节点仅允许当能够通信的从节点数量大于等于此处的值时,才允许接受写操作;
min-slaves-max-lag 10 #从节点延迟时长超出此处指定的时间时,主节点会拒绝写入操作;

安全配置

requirepass foobared # 用来配置密码
rename-command CONFIG b84 #在公共环境下重命名部分敏感命令 如config、flushall等

限制配置

maxclients 10000 #最大连接数
maxmemory <bytes> #最大使用内存
maxmemory-policy volatile-lru #内存到极限后的处理策略

#内存处理策略,用于在超出内存限制时,删除一些key
volatile-lru # LRU算法删除过期key
allkeys-lru # LRU算法删除key(不区分过不过期)
volatile-random # 随机删除过期key
allkeys-random # 随机删除key(不区分过不过期)
volatile-ttl # 删除快过期的key
noeviction # 禁止删除key,这如果内存不足,会直接返回错误。默认配置

#用于提高LRU/TTL算法的精准度,在自动清理内存时,指定的数字越大,CPU消耗就越多,默认为5。
maxmemory-samples 5

AOF日志模式

appendonly no #是否启用日志模式
appendfsync no # 有系统决定何时写,统一写,速度快
appendfsync always # 系统不缓冲,一直写,但是慢,这种方式几乎不丢失数据
appendfsync everysec #每秒写1次

no-appendfsync-on-rewrite no #相当于将appendfsync设置为no,不存在磁盘操作,只是将数据写入了缓冲区,写入速度非常快
auto-AOF-rewrite-percentage 100 #触发aof重写操作,要求本次文件大小比上次重写时要增加1(100%)倍
auto-AOF-rewrite-min-size 64mb #触发aof重写操作,至少要达到的aof文件大小

慢查询配置

Redis slowlog 是一个记录 Redis 执行查询命令时所耗费时间的日志系统,它仅记录执行一个查询命令所耗费的时间,不记录其他内容。

slowlog-log-slower-than 10000 #记录响应时间大于10000微秒的慢查询
slowlog-max-len 128 # 最多记录128条

服务端命令

time #返回时间戳+微秒
dbsize #返回key的数量
bgrewriteaof #重写aof
bgsave #后台开启子进程来执行数据持久化
save #以阻塞的方式对数据进行持久化
lastsave #返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。

slaveof host port #设置为host:port的从服务器(数据清空,复制新的主服务器内容)
slaveof no one   #变成主服务器(原数据不丢失,一般用于主服失败后)

flushdb 清空当前数据库的所有数据
flushall 清空所有数据库的所有数据

shutdown [save/nosave] 关闭服务器,保存数据,修改AOF

slowlog get 获取慢查询日志
slowlog len 获取慢查询日志条数
slowlog reset 清空慢查询

客户端命令

#以易于理解和阅读的方式返回Redis服务器的各种信息、统计数值
info [server|clients|memory|stats|]
config get [配置项]    #获取配置文件选项
config set [配置项] [参数值] #重新设置配置文件选项和对应参数
config rewrite  #对启动Redis服务器时所指定的配置文件进行改写
config resetstat #重置info命令中的某些统计信息

debug object key #调试选项,看一个key的情况
debug segfault #该命令能够让服务器崩溃
object key (refcount|encoding|idletime)
monitor #调试用,打开控制台,观察命令
client list #列出所有连接
client kill #杀死某个连接 CLIENT KILL 127.0.0.1:6379
client getname #获取连接的名称 默认nil
client setname  #设置连接名称,便于调试

连接命令

auth 密码  #验证登录密码(如果设置了密码)
ping      #测试服务器是否可用
echo "hello www.biancheng.net" #测试服务器是否正常交互
select 0/1/2/3/4...  #选择数据库0-15
quit  #退出连接

http://c.biancheng.net/redis/config-summary.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis配置项汇总(超级详细) 的相关文章

  • 无法启动redis.service:单元redis-server.service被屏蔽

    我在 ubuntu 16 04 上安装了 Redis 服务器 但是当我尝试使用启动redis服务时 sudo systemctl start redis 我收到消息 Failed to start redis service Unit re
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • Redis Docker compose无法处理RDB格式版本10

    我无法在 docker compose 文件中启动 redis 容器 我知道docker compose文件没问题 因为我的同事可以成功启动项目 我读到有一个删除 dump rdb 文件的解决方案 但我找不到它 我使用Windows机器 任
  • 2 个具有共享 Redis 依赖的 Helm Chart

    目前 我有 2 个 Helm Charts Chart A 和 Chart B Chart A 和 Chart B 对 Redis 实例具有相同的依赖关系 如Chart yaml file dependencies name redis v
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • redis dump.rdb / 保存小文件

    Context 我正在使用redis 数据库小于 100 MB 但是 我想进行每日备份 我也在 Ubuntu Server 12 04 上运行 当输入 redis cli save 我不知道 dump rdb 保存到哪里 因为 redis
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • Spring Redis删除不删除key

    我正在尝试删除一个 Redis 键 但由于某种原因它没有删除 但也没有抛出异常 这是我要删除的代码 import com example service CustomerService import com example model Cu
  • Redis 队列工作程序在 utcparse 中崩溃

    我正在尝试按照以下教程获得基本的 rq 工作 https blog miguelgrinberg com post the flask mega tutorial part xxii background jobs https blog m
  • 在 Spring 4 中干掉通用的 RedisTemplate

    我读到你可以拥有 Autowired从 Spring 4 开始泛型 这太棒了 我有一个摘要RedisService我想参加的课程 Autowired一个通用的 RestTemplate 如下所示 public abstract class
  • 如何配置Lettuce Redis集群异步连接池

    我正在配置我的生菜重新分配池 当我按照官方文档配置时 连接池无法正常初始化 无法获取连接 官方文档指出 RedisClusterClient clusterClient RedisClusterClient create RedisURI
  • 由于配置文件错误,无法启动 Redis 服务器

    我刚刚按照此处的说明安装了 Redis http redis io download http redis io download 当我运行 redis server redis conf 时出现以下错误 FATAL CONFIG FILE
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • Web API 缓存 - 如何使用分布式缓存实现失效

    我有一个 API 目前不使用任何缓存 我确实有一个正在使用的中间件 它可以生成缓存标头 Cache Control Expires ETag Last Modified 使用https github com KevinDockx HttpC
  • 如何通过ARM模板输出返回Redis的primaryKey?

    我正在尝试借助下面列出的 ARM 模板来部署 Redis 然后返回其主密钥 Azure 门户中 Redis 的 访问密钥 gt 主 下可用的秘密字符串 但是 我从管道 AzureResourceManagerTemplateDeployme
  • 为什么我们需要 Redis 来运行 CKAN?

    我想知道为什么我们需要 Redis 服务器来运行 CKAN 如果需要 为什么 我如何使用 CKAN 配置它 附注 我正在 RHEL7 中运行我的 ckan 实例 Update Redis 已成为一项要求从CKAN 2 7开始 https d
  • 检查 Redis 列表中是否已存在某个值

    我想知道是否有办法检查 redis 列表中是否已存在某个键 我无法使用集合 因为我不想强制唯一性 但我确实希望能够检查字符串是否确实存在 Thanks 您的选择如下 Using LREM如果发现则更换它 维护一个单独的SET与您的LIST
  • 无法使用 ASP.NET 会话状态提供程序连接到 Redis 服务器

    一段时间以来 我一直在尝试用 Redis 替换 ASP NET Session 多个小时与适用于 Redis 的 Microsoft ASP NET 会话状态提供程序 http blogs msdn com b webdev archive
  • 在 Rails 应用程序上将 HASH 保存到 Redis

    我刚刚开始使用 Redis 和 Rails 所以这可能是一个愚蠢的问题 我试图将哈希值保存到 Redis 服务器 但是当我检索它时 它只是一个字符串 IE hash field gt value field2 gt value2 redis
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J

随机推荐