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 1gB# 包含,可以把其他的配置导入进来
# include /path/to/local.conf
# include /path/to/other.conf# 绑定的ip,允许哪个可以访问,默认只能本地访问
# 如果需要所有访问 *
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1# 保护模式
# protected-mode yesport 6379# 以守护(后台)进程的方式运行,默认是no,
daemonize yes# 如果以后台的方式运行,我们就需要指定一个 pid 文件
pidfile /var/run/redis_6379.pid# 日志# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably) 生产环境
# warning (only very important / critical messages are logged)
loglevel noticelogfile "" # 日志的文件位置名databases 16 # 数据库的数量,默认是16 个数据库always-show-logo yes # 是否显示 开启redis 时的logo# 快照
# 持久化,在规定的时间内,执行了多少次操作,则会持久化到文件, .rdb .aof# redis是内存数据库,如果没有持久化,那么数据断电即失# 900s内如果有一个key进行了修改,我们就进行持久化操作
save 900 1
save 300 10
save 60 10000stop-writes-on-bgsave-error yes # 持久化如果出错,是否还需要继续工作rdbcompression yes # 是否压缩rdb文件,需要消耗一些cpu资源!rdbchecksum yes # 保存rdb文件的时候,进行错误的检查校验!dir ./ # rdb文件保存的目录# 密码,redis默认没有密码
requirepass 123456##########################扩展############################ 限制clients
maxclients 10000 # 默认限制最大1w个客户端连接# redis 配置最大的内存容量
maxmemory <bytes># 内存到达上限之后的处理策略
# 移除一些过期的key
# 报错。。。
maxmemory-policy noeviction# aof 默认不开启
# 默认是使用rdb持久化的
# 在大部分的情况下,rdb完全够用
appendonly no# 持久化文件的名字
appendfilename "appendonly.aof"#
# appendfsync always # 每次修改都会同步,消耗性能
appendfsync everysec # 每s执行一次,如果这1s redis宕机了,这1s的数据就没了
# appendfsync no # 不执行sync,这个时候操作系统自己同步数据,速度最快!
使用命令设置redis密码
maxmemory-policy 内存满了的处理策略
reids持久化
面试和工作,持久化都是重点!
redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以redis提供了持久化功能!
rdb
触发机制
如何恢复rdb文件中的数据
有时候在生产环境,我们会将rdb文件备份!
优缺点
aof
将我们所有的写命令都记录下来,history,恢复的时候就把这个文件的命令全部执行一遍!
redis.conf
# 默认是不开启的,改为yes就开启了,需要重启redis
appendonly no# appendfsync always # 每次修改都会同步,消耗性能
appendfsync everysec # 每s执行一次,如果这1s redis宕机了,这1s的数据就没了
# appendfsync no # 不执行sync,这个时候操作系统自己同步数据,速度最快!就相当于没开启aof了应该是# 在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,
# no-appendfsync-on-rewrite字段设置为默认设置为no。如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择。
# 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes。Linux的默认fsync策略是30秒。可能丢失30秒数据。默认值为no。
no-appendfsync-on-rewrite no# aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。
# 当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
auto-aof-rewrite-percentage 100
# 设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写。
auto-aof-rewrite-min-size 64mb
redis-check-aof 修复aof文件
rdb也有类似文件
aof文件出现错误的话,redis是启动不起来的。
# 例如我们在里面随便敲一些,它就把它不认识的全部删掉了
redis-check-aof --fix appendonly.aof
优缺点
扩展
部分内容转载自:
https://blog.csdn.net/sinat_25207295/article/details/117925174
https://www.bilibili.com/video/BV1S54y1R7SB?p=27&spm_id_from=pageDriver&vd_source=64c73c596c59837e620fed47fa27ada7
https://juejin.cn/post/7137104039753285645
怄气的人总是绷着脸、阴沉沉的样子,而且安静的很反常。
蛤蟆先生
【英】罗伯特·戴博德