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.单线程的定义

  • 所有客户端发送的命令会排队依次执行
  • 每个命令(如 GETSETINCR)本身是原子的
  • 不会出现两个命令同时修改同一个 key 导致数据错乱

因为高并发的场景下会出现问题

我的业务逻辑需要多个 Redis 命令组合来完成,就需要用到lua脚本,保持原子性

4.导出数据

使用 SAVEBGSAVE 导出 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 下载使用

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

相关推荐
桦说编程2 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅4 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者5 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺5 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
倔强的石头_5 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
Derek_Smart6 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP7 小时前
MyBatis-mybatis入门与增删改查
java
孟陬10 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌10 小时前
一站式了解四种限流算法
java·后端·go