【Redis 系列】redis 学习七,那些你不知道的 redis 配置文件详解

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【Redis 系列】redis 学习七,那些你不知道的 redis 配置文件详解

Redis 配置文件详解

单位

redis 启动的时候会去读配置文件 redis.conf

1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes

redis 里面单位是不分大小写的,例如,1GB 1Gb 1gB 表示的都是同一个意思

INCLUDES 包含

环境中使用的 redis.conf 可以包含其他的 redis.conf,他们会整合成一个 配置文件来提供使用

NETWORK 网络

bind 0.0.0.0 
protected-mode yes
port 6379

bind

绑定地址,若绑定 127.0.0.1 是本地访问,若需要远程访问,可以绑定一个真实的 ip 地址

protected-mode

保护模式是否开启,默认是开启

port

端口设置,默认端口是 6379,我们也可以修改成其他的可用端口,例如集群的时候就会修改到端口

GENERAL 通用

通用配置,常用的有

daemonize yes
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo no
set-proc-title yes

daemonize

是否以守护进程的方式运行,默认是 no,我们需要的话可以修改成 yes

pidfile

以后台方式运行 redis ,我们就需要制定一个 pid 文件

loglevel

日志等级

291 # Specify the server verbosity level.
 292 # This can be one of:
 293 # debug (a lot of information, useful for development/testing)
 294 # verbose (many rarely useful info, but not a mess like the debug level)
 295 # notice (moderately verbose, what you want in production probably)
 296 # warning (only very important / critical messages are logged)

和我们项目中用到的一致:

  • debug

用于开发和测试的调试信息

  • verbose

罕见有用的信息

  • notice

提示信息,期望在生产环境中看到的

  • warning

告警信息,重要的信息会被打印到日志中

logfile

指定 redis 日志文件路径

databases

redis 数据库, 默认是 16 个

always-show-logo

是否总是显示 reids logo ,就是下面这个 logo

_._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 6.2.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 29303
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           https://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

SNAPSHOTTING 快照

快照,这里也就是 redis 的持久化,在规定的时间里面,执行了多少次操作,就会持久化到文件中

redis 的持久化有两种

  • RDB
  • AOF

redis 是内存数据库,程序宕机或者断电都会导致数据丢失,因此 redis 就有这样的持久化策略

# save 3600 1
# save 300 100
# save 60 10000
  • save 3600 1

如果 3600 s 内 redis 发生了 1 次操作, 那么就会做数据持久化

  • save 300 100

如果 300s 内 redis 发生了 100 次操作, 那么就会做数据持久化

  • save 60 10000

如果 60s 内 redis 发生了 10000 次操作, 那么就会做数据持久化

后面咱们详细写到持久化的时候,再来细说和实际测试持久化的事情

stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dir ./

stop-writes-on-bgsave-error

redis 持久化出错是否继续执行 redis 程序,默认是打开的,持久化错误不能影响 redis 程序的执行,需要正常进行下去

rdbcompression

持久化的文件是否需要压缩,默认是开启的,这个功能会比较消耗性能

rdbchecksum

保存 rdb 持久化文件的时候,会进行错误检查校验

dir

rdb 文件的保存目录

REPLICATION 主从复制

主从复制的配置在这个位置

详细的后续写到主动复制的时候详细的写

SECURITY 安全

redis 的安全相关配置文件,咱们来看看密码的事情

# The requirepass is not compatable with aclfile option and the ACL LOAD
# command, these will cause requirepass to be ignored.
#
# requirepass foobared

redis 默认是不设置密码的,但是我们为了远程访问安全,必须要设置密码

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 888888
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "888888"
退出 redis 客户端,再次连接 redis-server
root@iZuf66y3tuzn4wp3h02t7pZ:~# redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.

对 redis 设置了密码之后,退出 redis 客户端,再次连接 redis-server,发现 redis 报错权限不足,此时我们使用 redis-client 连接 redis-server 就需要密码了

127.0.0.1:6379> auth 888888
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "888888"

CLIENTS 客户端

限制客户端连接数

maxclients 10000

maxclients

redis 限制客户端连接数 默认是 10000 个,这个数字我们也可以修改成我们所期望的

MEMORY MANAGEMENT 内存管理

maxmemory <bytes>
maxmemory-policy noeviction

maxmemory

redis 配置的最大内存容量,单位是字节

maxmemory-policy

redis 内存达到上限之后的处理策略是什么样的,有如下几个选型:

  • noeviction

永不过期,返回错误

  • volatile-ttl

删除即将过期的

  • allkeys-random

随机删除 key

  • volatile-random

随机删除即将过期的 key

  • allkeys-lru

删除 lru 算法的 key

  • volatile-lru

只对设置了过期时间的 key 进行 LRU

LRU(Least recently used,最近最少使用)

APPEND ONLY MODE 追加模式(aof 配置)

APPEND ONLY MODE 用于 AOF 的持久化

appendonly no
appendfilename "appendonly.aof"
# appendfsync always
appendfsync everysec
# appendfsync no

appendonly

默认是关闭的,redis 默认使用的是 rdb 持久化模式,基本是够用的

appendfilename

aof 持久化 文件的名字

appendfsync

持久化同步策略

  • always 每次修改都会同步,消耗性能
  • everysec 每秒执行一次同步,异常情况下会丢失上 1 s 的数据
  • no 不主动同步数据,系统会自动同步,这种方式速度最快,但是丢失数据的几率大

对于 redis 配置文件常用常改的位置都给大家分享到了,需要多多在实际学习和工作中多多应用,熟能生巧

参考资料:

redis_doc

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是小魔童哪吒,欢迎点赞关注收藏,下次见~

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
27天前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
86 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
5月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
81 1
|
24天前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
171 3
|
26天前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
22 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
30天前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
22 3
|
5月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
82 0
|
5月前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
95 0
|
1月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
164 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
27天前
|
NoSQL Redis
redis学习五、错误总结,redis正常运行时后会出现一些bug 总结。
本文介绍了Redis在正常运行时可能遇到的一个错误,即无法进行磁盘持久化的问题,并提供了通过设置`stop-writes-on-bgsave-error`为`no`来解决这一问题的方案。
81 0
|
3月前
|
缓存 NoSQL 关系型数据库
Redis学习总结
Redis学习总结
36 1