论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
Oracle
›
Redis组件介绍(三)
Redis组件介绍(三)
星球的眼睛
论坛元老
|
2024-8-31 01:07:49
|
显示全部楼层
|
阅读模式
楼主
主题
1318
|
帖子
1318
|
积分
3954
写在前面
本日来继续学习 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>
<artifactId>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 返回增长后的值。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
星球的眼睛
论坛元老
这个人很懒什么都没写!
楼主热帖
体系集成项目招标要诀
Java项目:基于SSM框架实现的康健综合 ...
微调神器LLaMA-Factory官方保姆级教程 ...
防止邮箱发信泄露服务器IP教程 ...
CMake构建学习笔记11-minizip库的构建 ...
Ubuntu上安装Chrome浏览器
第三篇【传奇开心果系列】Python的自动 ...
xmind父主题快捷键Ctrl+Enter
若依——后端多表联查(实用于只查询) ...
G7易流赋能化工物流,实现安全、环保与 ...
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
SQL-Server
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表