使用redis-cli登录 1 2 3 root@ubuntu2204:~ Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
获取redis当前配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 10.0.0.7:6379> config get * 1) "aof-use-rdb-preamble" 2) "yes" 3) "enable-protected-configs" 4) "no" 5) "bio_cpulist" 6) "" 7) "cluster-announce-ip" 8) "" 9) "syslog-facility" 10) "local0" 11) "dir" 12) "/" …………
查询数据库中的总数据量 1 2 10.0.0.7:6379> DBSIZE (integer ) 10000
使用set配置redis参数 1 2 3 4 5 6 7 10.0.0.7:6379> config set requirepass 123456 OK 10.0.0.7:6379> CONFIG SET MAXMEMORY 2147483648 OK
开启慢查询 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 root@ubuntu2204:~ slowlog-log-slower-than 10000 slowlog-max-len 1000 10.0.0.7:6379> slowlog len (integer ) 2 10.0.0.7:6379> slowlog get 1) 1) (integer ) 1 2) (integer ) 1715851690 3) (integer ) 1927 4) 1) "keys" 2) "*" 5) "10.0.0.7:56682" 6) "" 2) 1) (integer ) 0 2) (integer ) 1715851681 3) (integer ) 1700 4) 1) "COMMAND" 2) "DOCS" 5) "10.0.0.7:56682" 6) ""
开启数据持久化(RDB模式) RDB模式:保存基于某个时间点的数据快照,由redis主进程生成一个子进程,保存内存中的数据为一个<子进程id>.rdb,当保存完成后,再改为名RDB文件。redis只保留最后一个RDB文件
缺点:不能实时保存数据;数据量大时,fork()进程会比较耗时
实现方法:
save指令:同步执行,不推荐使用,使用主进程完成快照,会阻塞其它命令
bgsave:异步后台执行,不影响其它命令执行
配置文件实现自动保存:在配置文件中制定规则,满足规则自动执行,bgsave模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 root@ubuntu2204:~ 10.0.0.7:6379> config get save 1) "save" 2) "3600 1 300 100 60 10000"
修改配置实现自动保存:
1 2 3 4 root@ubuntu2204:~ save 60 5 dbfilename dump.rdb dir /apps/redis/data/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 root@ubuntu2204:~ /apps/redis/ ├── bin │ ├── redis-benchmark │ ├── redis-check-aof -> redis-server │ ├── redis-check-rdb -> redis-server │ ├── redis-cli │ ├── redis-sentinel -> redis-server │ └── redis-server ├── data │ └── dump.rdb ├── etc │ └── redis.conf ├── log └── run └── redis_6379.pid 5 directories, 9 files
开启数据持久化(AOF模式) AOF采用COW机制,通过记录日志的方式将数据变化追加记录到AOF文件尾部中
第一次启用AOF时会对数据做完全备份,后续将执行增量性备份
AOF文件优先级高于RDB,恢复redis服务时会优先使用AOF文件
直接修改配置文件开始AOF,会创建空的AOF文件加载,造成数据丢失
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 1、通过config指令开启appendonly,触发aof,自动备份所有数据到AOF文件 10.0.0.7:6379> CONFIG GET APPENDONLY 1) "APPENDONLY" 2) "no" 10.0.0.7:6379> CONFIG SET APPENDONLY YES OK root@ubuntu2204:~ /apps/redis ├── bin │ ├── redis-benchmark │ ├── redis-check-aof -> redis-server │ ├── redis-check-rdb -> redis-server │ ├── redis-cli │ ├── redis-sentinel -> redis-server │ └── redis-server ├── data │ ├── appendonlydir │ │ ├── appendonly.aof.1.base.rdb │ │ ├── appendonly.aof.1.incr.aof │ │ └── appendonly.aof.manifest │ └── dump.rdb ├── etc │ └── redis.conf ├── log └── run └── redis_6379.pid 6 directories, 12 files 2、修改配置文件,以在服务重启时保持AOF开启 root@ubuntu2204:~ appendonly yes
AOF相关配置项
1 2 3 4 appendonly yes appendfilename "appendonly.aof" appenddirname "appendonlydir" appendfsync everysec
rewrite相关
由于追加式的AOF文件会不断增长文件大小,其中包含一些过期的无效记录,可以通过rewrite重写来生成新的AOF文件,从而节省磁盘空间
可以通过”bgrewriteaof” 来触发
1 2 3 10.0.0.7:6379> bgrewriteaof Background append only file rewriting started 10.0.0.7:6379>
也可通过配置文件以下选项定义触发策略
1 2 3 no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
RDB和AOF的选择
如果主要充当缓存功能,或者可以允许较长时间,比如数分种数据的丢失,通常只需启用RDB即可(redis默认已开启)
如果数据不允许丢失,可以选择同时开始RDB和AOF
不建议只开启AOF