登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
安全
›
Redis组件介绍(三)
Redis组件介绍(三)
[ 复制链接 ]
睿哝
2025-10-7 12:26:23
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
写在前面
今天来继续学习 Redis。
Redis 持久化机制
快照 (Snapshot)
特点
快照持久化可以将某一时刻的所有数据写入硬盘,默认开启,保存为 .rdb 文件,也称为 RDB 持久化。
快照生成方式
客户端方式
BGSAVE
使用 BGSAVE 命令创建快照,Redis 会创建一个子进程进行写入,父进程继续处理命令请求。
名词解释
: fork 是创建子进程的操作,初期父子进程共享内存,直到写操作发生才会分开。
SAVE
使用 SAVE 命令创建快照,Redis 在快照创建期间会阻塞,不响应其他命令。
注意
: SAVE 命令会使 Redis 处于阻塞状态。
服务器配置自动触发
满足配置自动触发
在 redis.conf 中设置 save 配置选项,Redis 会在满足条件时自动触发 BGSAVE。
设置多个 save 选项时,任意条件满足均会触发 BGSAVE。
接收客户端 shutdown 指令
执行 shutdown 指令时,Redis 会执行 SAVE 命令,然后关闭服务器。
配置生成快照名称和位置
修改生成快照名称
dbfilename dump.rdb
修改生成位置
dir ./
问题
快照可能导致数据丢失,尤其是在快照后有写操作而断电的情况下。
AOF 只追加日志文件
特点
将所有写命令记录到日志文件中,通过执行日志文件中的命令来恢复数据。
开启 AOF 持久化
在 redis.conf 中开启:
appendonly yes
appendfilename "appendonly.aof"
日志追加频率
always
【谨慎使用】
每个写命令都同步写入硬盘,降低 Redis 性能,SSD 用户应慎用。
everysec
【推荐默认】
每秒同步一次 AOF 文件,性能与无持久化时接近,最多丢失一秒数据。
no
【不推荐】
由操作系统决定同步时间,不会影响 Redis 性能,但可能丢失不定数量的数据。
修改同步频率
修改 appendfsync 为 everysec、always 或 no。
AOF 文件的重写
AOF 文件会变大,Redis 提供 AOF 重写机制来压缩文件。
触发重写方式
客户端方式触发
执行 BGREWRITEAOF 命令,不会阻塞 Redis 服务。
服务器配置自动触发
配置 auto-aof-rewrite-percentage 和 auto-aof-rewrite-min-size 选项。
重写原理
7.0.0之前
从 Redis 7.0.0 开始,使用多部分 AOF 机制,将 AOF 文件拆分为基础文件和增量文件,通过清单文件跟踪。
重写流程
Redis 调用 fork,子进程重写 AOF 文件。
父进程继续处理客户端请求,将写命令缓存。
子进程完成重写后,父进程将缓存的写命令写入新文件。
用新文件替换旧文件。
总结
可以同时使用 AOF 和快照持久化,也可以单独使用,具体选择取决于数据和应用的需求。持久化文件应定期备份。
常见问题
Redis 中持久化方案有几种?
两种方案:RDB 快照持久化和 AOF 文件持久化。
如何触发 RDB 持久化?几种方式?有什么区别?
BGSAVE
: 创建子进程进行快照。
SAVE
: 阻塞当前 Redis 实例,创建快照。
shutdown
: 服务器关闭时自动执行 SAVE。
ctrl+c 或 kill -9
: 直接停止进程,触发 SAVE。
AOF 持久化与 RDB 持久化的优缺点?
RDB
: 启动快,可能丢失数据。
AOF
: 数据持久性好,启动时性能差,文件变大。推荐结合使用。
Redis 7.0 之前和之后的重写机制?
之前
: 父进程将操作放到内存,子进程生成新 AOF 文件。
之后
: 使用多部分 AOF 文件,父进程写入新文件,子进程生成基础 AOF 文件和增量文件,原子替换。
如何不让启动界面占用窗口?
在 redis.conf 中设置 daemonize 为 yes。
位图 (Bitmap)
介绍
位图不是一种真正的数据类型,而是定义在字符串类型中的。一个字符串最多可以存储 512MB 的内容。
位上限
: 2^(9(512) + 10(1024) + 10(1024) + 3(8b=1B)) = 2^32b
位操作命令
SETBIT
说明
: 设置某一位上的值。
语法
: SETBIT key offset value (offset 为位偏移量,从 0 开始)
GETBIT
说明
: 获取某一位上的值。
语法
: GETBIT key offset
BITPOS
说明
: 返回指定值 (0 或 1) 在指定区间上首次出现的下标。
语法
: BITPOS key bit [start] [end]
查找范围
:
不指定范围:BITPOS key bit
指定开始位置:BITPOS key bit start
指定开始和结束位置:BITPOS key bit start end
BITOP
说明
: 对一个或多个保存二进制位的字符串进行位操作,并将结果保存到 destkey。
操作类型
:
AND
: BITOP AND destkey key [key ...]
OR
: BITOP OR destkey key [key ...]
XOR
: BITOP XOR destkey key [key ...]
NOT
: BITOP NOT destkey key
BITCOUNT
说明
: 统计指定区间内值为 1 的个数。
语法
: BITCOUNT key [start] [end]
区间
:
正方向:BITCOUNT key start end(从左向右)
负方向:BITCOUNT key start end(从右向左)
位图应用场景
网站用户签到的天数统计
用户 ID 为 key,天作为 offset,签到置为 1。
例如,第 366 天签到,数据存储为 000000000000000。
按天统计网站活跃用户
天作为 key,用户 ID 为 offset,活跃用户置为 1。
统计活跃用户数量:例如,50000000 用户分布在 366 天的数据大约为 2GB。
用户在线状态和人数统计
使用位图记录用户在线状态,可以有效统计当前在线人数和活动情况。
Java 操作 Redis
引入依赖
在 pom.xml 文件中添加 Jedis 连接依赖:
<dependency>
<groupId>redis.clients</groupId>
jedis</artifactId>
<version>4.3.2</version>
</dependency>
复制代码
创建 Jedis 对象
public static void main(String[] args) {
// 1. 创建 Jedis 对象
Jedis jedis = new Jedis("192.168.xxx.xxx", 7000);
// 2. 选择操作的数据库,默认为 0 号库
jedis.select(0);
// 3. 执行相关操作
// ...
// 4. 释放资源
jedis.close();
}
复制代码
操作 Key 相关 API
DEL
说明
: 删除指定的 key。
返回值
: 被删除 key 的数量。
EXISTS
说明
: 检查 key 是否存在。
返回值
: 存在返回 1,不存在返回 0。
EXPIRE
说明
: 为已经存在的 key 设置过期时间。
返回值
: 设置成功返回 1,失败返回 0。
扩展
:
PEXPIRE: 毫秒级别。
PEXPIREAT: 指定时间戳。
KEYS
说明
: 返回符合模式的 key 列表。
返回值
: 符合模式的 key 列表。
MOVE
说明
: 将 key 移动到另一个数据库。
返回值
: 移动成功返回 1,失败返回 0。
TTL
说明
: 获取 key 的剩余生存时间。
返回值
:
当 key 不存在时返回 -2。
当 key 存在但没有设置剩余生存时间时返回 -1。
否则,返回剩余生存时间(秒)。
PTTL
说明
: 获取 key 的剩余生存时间(毫秒级)。
RANDOMKEY
说明
: 返回一个随机的 key。
返回值
: 数据库不为空时返回一个 key,空时返回 null。
RENAME
说明
: 重命名 key。
返回值
: 成功返回 OK,失败返回错误信息。
TYPE
说明
: 获取 key 的数据类型。
返回值
: none (key 不存在)、string、list、set、zset、hash。
操作 String 相关 API
SET
说明
: 设置 key 的值。
GET
说明
: 获取 key 的值。
MSET
说明
: 批量设置多个 key 的值。
MGET
说明
: 批量获取多个 key 的值。
返回值
: 字符串列表。
GETSET
说明
: 获取 key 的值并设置新值。
示例
: GETSET age 24 返回原值,设置新值为 24。
STRLEN
说明
: 获取 key 对应字符串的长度。
APPEND
说明
: 追加字符串到 key 的值末尾。
返回值
: 修改后的长度。
GETRANGE
说明
: 获取 key 对应字符串的子串。
示例
: GETRANGE key 0 4 返回子串。
SETEX
说明
: 设置 key 的值并设置过期时间(秒)。
示例
: 10 秒后自动销毁。
PSETEX
说明
: 设置 key 的值并设置过期时间(毫秒)。
SETNX
说明
: 仅当 key 不存在时设置 key 的值。
返回值
: 已存在返回 0,不存在返回 1。
MSETNX
说明
: 批量设置多个 key 的值,仅当所有 key 都不存在时成功。
返回值
: 仅当所有 key 都不存在时成功。
DECR
说明
: 将 key 对应的值减 1。
示例
: DECR key 返回减少后的值。
DECRBY
说明
: 将 key 对应的值减指定的值。
示例
: DECRBY key 2 返回减少后的值。
INCR
说明
: 将 key 对应的值加 1。
示例
: INCR key 返回增加后的值。
INCRBY
说明
: 将 key 对应的值加指定的值。
示例
: INCRBY key 2 返回增加后的值。
INCRBYFLOAT
说明
: 将 key 对应的值按浮点数增加。
示例
: INCRBYFLOAT key 2.5 返回增加后的值。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Redis
组件
介绍
相关帖子
等保2.0三级要求下Redis 安全测评应该怎么做?
Redis:延迟双删的适用边界与落地细节
集成AI 的 Redis 客户端 Rudist发布新版了
IOFILE结构体的介绍与House of orange
Redis命令处理机制源码探究
Redis持久化:从AOF到RDB,如何实现数据不丢失?
Redis 单线程真的是单线程吗?源码角度全面解析
FastAPI里玩转Redis和数据库的正确姿势,别让异步任务把你坑哭了!
Android复杂页面组件化策略
SpringCloud进阶--Redis与分布式
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
等保2.0三级要求下Redis 安全测评应该怎么做?
1
529
邹弘丽
2026-03-25
业界
Redis:延迟双删的适用边界与落地细节
0
520
命煦砌
2026-03-26
业界
集成AI 的 Redis 客户端 Rudist发布新版了
1
191
水苯
2026-03-27
业界
IOFILE结构体的介绍与House of orange
0
157
拍棹
2026-03-28
业界
Redis命令处理机制源码探究
1
711
赫连如冰
2026-03-30
业界
Redis持久化:从AOF到RDB,如何实现数据不丢失?
2
353
泥地锚
2026-03-31
安全
Redis 单线程真的是单线程吗?源码角度全面解析
1
605
别萧玉
2026-03-31
业界
FastAPI里玩转Redis和数据库的正确姿势,别让异步任务把你坑哭了!
1
239
斜素欣
2026-04-01
业界
Android复杂页面组件化策略
2
691
缍米
2026-04-02
业界
SpringCloud进阶--Redis与分布式
0
6
讹过畔
2026-04-03
回复
(33)
玲液
2025-10-25 11:13:07
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
馑妣窟
2025-12-15 13:56:43
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
榷另辑
2025-12-21 17:22:56
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
怃膝镁
2026-1-6 22:53:36
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
即息极
2026-1-15 09:05:51
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
晁红叶
2026-1-18 13:03:48
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
驳嗦
2026-1-18 19:11:08
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
东西不错很实用谢谢分享
庾芷秋
2026-1-21 01:31:03
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
扎先
2026-1-23 04:49:01
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
茹静曼
2026-1-23 07:54:54
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
拼匍弦
2026-1-25 11:43:54
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
阕阵闲
2026-1-26 06:42:32
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
喜欢鼓捣这些软件,现在用得少,谢谢分享!
骆贵
2026-1-26 09:23:11
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
闻成
2026-1-29 07:10:15
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
过来提前占个楼
仲水悦
2026-1-29 13:35:08
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
收藏一下 不知道什么时候能用到
阙忆然
2026-1-30 05:50:19
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
坠矜
2026-1-30 06:49:08
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
呵烘稿
2026-1-31 02:15:32
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,试用一下
时思美
2026-2-7 06:39:05
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
新版吗?好像是停更了吧。
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
睿哝
2026-2-7 06:39:05
关注
0
粉丝关注
17
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9528
6
韶又彤
9910
7
荪俗
9017
8
宋子
9874
9
蓬森莉
9870
10
俞瑛瑶
10000
查看更多
今日好文热榜
108
【ESP32】使用 MQTT(S) 连接华为云 IoT
534
用硬件隔离阻断供应链“病毒式”投毒:TEE
811
密码爆破日志分析与隧道流量检查
708
怎么活呢,与AI探讨人生意义与人性思考
53
元意识形态与在地立场:论“AI元人文”框架
796
MediaStudio 发布:给自媒体 Up 主准备的效
54
使用Java对接印度股票市场API 实时数据、IP
952
红日靶场五 WP | ThinkPHP RCE → 内核提权
902
红日靶场五 WP | ThinkPHP RCE → 内核提权
327
红日靶场五 WP | ThinkPHP RCE → 内核提权
107
Laravel开发三个技术栈组合
697
红日靶场五 WP | ThinkPHP RCE → 内核提权
193
一个基于 .NET Core + Vue3 构建的开源全栈
357
清明追忆-昔人已逝,追忆不平
58
自感:在西方现象学与东方生活儒学之间
677
ESP32 实现在线动态安装库和自动依赖安装-
805
程序员的创业小工具 - 开源项目自荐-WeCrea
343
手撕 Transformer (3):编码器的实现
132
手撕 Transformer (3):编码器的实现
367
程序员的创业小工具 - 开源项目自荐-WeCrea