Redis的一些使用

总结一下 最近在项目中对redis的一些使用

1.查看最大内存

CONFIG GET maxmemory

我这边结果返回

  1. "maxmemory"

  2. "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。

我的测试操作为如下:

  1. 插入两个 key ✅
  2. 执行 BGSAVE → 此时生成的 RDB 包含这两个 key ✅
  3. 删除这两个 key ❌
  4. 重启 Redis → Redis 加载的是 步骤 2 生成的 RDB(包含 key)
  • Redis 在关闭前会自动保存最终状态 ,所以要在关闭前把备份的rdb文件复制出来

6.RedisInsight 下载使用

后面还有一些,等下次再写

相关推荐
金銀銅鐵11 分钟前
带您看懂字节码指令(二):空循环里有什么
java·后端·ai编程
吴名氏.2 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
爱码少年2 小时前
Springboot下如何将CSV文件数据导入H2、Mysql数据库表
数据库·mysql·csv
我不会起名字3223 小时前
会话缓存失效排查:区分 Redis 失效与节点广播
redis·后端·go·即时通讯·im·故障排查
.痞老板.3 小时前
java ee--多线程(进阶)
java·java-ee
可乐ea3 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
深入云栈4 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
阿义有问题4 小时前
MySQL 迁移达梦全流程实战:DTS 七步图解 + 对象名全大写适配(附踩坑清单)
数据库
wang_shu_mo_ran5 小时前
MyBatis 从入门到进阶(一)
java·spring·mybatis
量化分析码农7 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端