总结一下 最近在项目中对redis的一些使用
1.查看最大内存
CONFIG GET maxmemory
我这边结果返回
"maxmemory"
"0"
说明:
maxmemory 0表示:
Redis 可以使用无限内存(受限于操作系统可用内存)。
不会主动根据内存使用情况触发淘汰策略(eviction policy)。
当系统物理内存耗尽时,可能会导致操作系统 OOM(Out-Of-Memory)杀掉 Redis 进程,或系统变慢甚至崩溃。
设置相关参数
1.动态设置 (临时生效,重启后失效)
CONFIG SET maxmemory 2gb
CONFIG SET maxmemory-policy allkeys-lru
2.修改 Redis 配置文件(永久生效)
相关说明
单位支持:b(字节)、k/kb、m/mb、g/gb,例如 512mb、2g。
maxmemory 0 是 Redis 的默认值(在大多数版本中,尤其是未显式配置时)。
2.查看多个Key是否存在
EXISTS key1 key2 key3 ...
3.单线程的定义
- 所有客户端发送的命令会排队依次执行;
- 每个命令(如
GET、SET、INCR)本身是原子的;- 不会出现两个命令同时修改同一个 key 导致数据错乱。
因为高并发的场景下会出现问题

我的业务逻辑需要多个 Redis 命令组合来完成,就需要用到lua脚本,保持原子性
4.导出数据
使用 SAVE 或 BGSAVE 导出 RDB 快照(全量二进制备份)
SAVE:同步保存,会阻塞 Redis 服务。
redis-cli SAVE
BGSAVE:异步保存,在后台 fork 子进程生成快照,推荐使用。
redis-cli BGSAVE
执行后会在 Redis 配置的 dir 目录下生成一个 dump.rdb 文件(默认名),这就是你的数据快照。
**保留所有数据类型和结构。**不能选择性导出部分 key;是二进制格式,不能直接阅读或编辑。
远程导出
因为项目的Redis是在远程服务器上面,我想从远程服务器上面导出到我电脑本地
命令使用
redis-cli -h <host> -p <port> -a <password> --rdb ./dump.rdb
录入
redis-cli -h 192.168.1.100 -p 6379 -a mysecretpassword --rdb ./redis_backup.rdb
注意无法直接从 CLI 内部把远程的 RDB 文件"下载"到本地机器,
因为 Redis CLI 是一个命令行客户端,它本身不具备文件传输能力 ------ 所有命令都是发送指令给 Redis 服务端,而 SAVE/BGSAVE 生成的 dump.rdb 文件是保存在 Redis 服务器所在的主机上,不是你的本地电脑
windows版本 需要下载Redis for Windows
https://github.com/microsoftarchive/redis/releases
5.数据恢复
本来想看看是否能和mysql一直在线通过IDE导入的,发现好像不行

我遇到的几个问题,导致没办法导入倒数
1.之前配置的是AOF
**如果 AOF 文件存在,Redis 会忽略 RDB 文件,只从 AOF 恢复数据!**即使你放了 dump.rdb,只要容器内存在 appendonly.aof 文件,Redis 就会加载 AOF ------ 而你的 AOF 文件可能是空的或旧的,导致数据"没恢复"
我选择的方式是先禁用aof,导入rdb 然后再启动aof
日志查看确认
Loading RDB snapshot from disk... --RDB
DB loaded from append only file .... --AOF
2.Redis 的自动保存机制(save 配置)
我之前配置了
save 60 1
如果 60 秒内至少有 1 次修改,就自动触发 BGSAVE。
我的测试操作为如下:
- 插入两个 key ✅
- 执行
BGSAVE→ 此时生成的 RDB 包含这两个 key ✅- 删除这两个 key ❌
- 重启 Redis → Redis 加载的是 步骤 2 生成的 RDB(包含 key)
- Redis 在关闭前会自动保存最终状态 ,所以要在关闭前把备份的rdb文件复制出来
6.RedisInsight 下载使用
后面还有一些,等下次再写