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

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

相关推荐
小冷coding9 小时前
【MySQL】MySQL 插入一条数据的完整流程(InnoDB 引擎)
数据库·mysql
Elias不吃糖9 小时前
Java Lambda 表达式
java·开发语言·学习
情缘晓梦.9 小时前
C语言指针进阶
java·开发语言·算法
鲨莎分不晴9 小时前
Redis 基本指令与命令详解
数据库·redis·缓存
专注echarts研发20年10 小时前
工业级 Qt 业务窗体标杆实现・ResearchForm 类深度解析
数据库·qt·系统架构
南知意-11 小时前
IDEA 2025.3 版本安装指南(完整图文教程)
java·intellij-idea·开发工具·idea安装
码农水水11 小时前
蚂蚁Java面试被问:混沌工程在分布式系统中的应用
java·linux·开发语言·面试·职场和发展·php
海边的Kurisu12 小时前
苍穹外卖日记 | Day4 套餐模块
java·苍穹外卖
毕设源码-邱学长12 小时前
【开题答辩全过程】以 走失儿童寻找平台为例,包含答辩的问题和答案
java