Redis提升
创始人
2025-05-30 18:41:17

redis的发布和订阅

客户端可以订阅多个频道,当订阅的频道有消息发布,就会通知所有订阅该频道的客户端

SUBSCRIBE channel1  //订阅频道

publish channel1 hello  //发布消息

bitsmap 位图

setbit   key   offest  1    //将偏移的位置,置1 

getbit   key   offest        //获取偏移位置对应的值

bitcount  key    //统计置1的数量

bitop    and/or

省内存,适用于存储大量活跃用户


hyperloglog  做基数处理的数据类型

pfadd  key  val1  val2  val3 ...   

pfcount  key   //统计出基数的个数

pfmerge  k3  k1  k2  //合并到k3

Geospatial  经纬度

getadd   key  经度  维度   字段

geopos  key  字段   //查看某字段的经纬度

geodist   key  字段1  字段2   km   //查看两地之间的距离

Redis事务

Redis事务是一个单独的隔离操作∶事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断


Redis事务的主要作用就是串联多个命令防止别的命令插队

事务命令

multi  //开始    exec  //执行    discard  //放弃组队

组队的时候,有任意一个命令出现了报告错误,执行时整个队列都会被取消

如果执行阶段某个命令报告了错误,则只有报错的命令不会被执行,而其他正确命令可以执行

事务冲突解决

悲观锁:任意时刻只有一个人可以操作数据库

乐观锁:读共享,更新数据后,会更改数据库版本号,其他人再次更新时,需要查看数据库版本号是否一致。

watch  key           //监视key

unwatch  key       //取消监视key,exec命令或者discard命令被执行后,就不须要执行unwatch

乐观锁

Redis事务的三大特性

单独的隔离操作
事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断


没有隔离级别的概念
队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行


不保证原子性
事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚

 

Redis持久化RDB

rdb:在指定的时间间隔内将内存中的数据集快照写入磁盘

Redis 会单独fork 一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换为持久化的文件(dump.rdb)。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效

RDB的缺点是最后一次持久化后的数据可能丢失

优点:

1.适合大规模的数据恢复
2.对数据完整性和一致性要求不高更适合使用
3.节省磁盘空间

4.恢复速度快

缺点: 

1.Fork 的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑
2.虽然 Redis,在 fork 时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能
3.在备份周期在一定间隔时间做一次备份,所以如果 Redis意外down 掉的话,就会丢失最后一次快照后的所有修改

redis.conf

当redis无法写入磁盘,直接关闭redis的写操作   stop-writes-on-bgsave-error yes

 存储到磁盘的快照是否压缩  stop-writes-on-bgsave-error yes

 

检查数据完整性  rdbcompression yes 

save秒  写操作次数

20s   >=  3    20秒后,子进程进行持久化



rdb数据备份

 复制dump.rdb 

Redis持久化AOF

以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

开启AOF

AOF和RDB同时开启,系统默认读取AOF(数据不会丢失)的数据

AOF文件异常

通过/usr/local/bin/redis-check-aof--fix 进行修复

AOF同步频率设置

appendfsync always
始终同步,每次 Redis的写入都会立刻记入日志;性能较差但数据完整性比较好

appendfsync everysec
每秒同步,每秒记入日志一次,如果宕机,本秒的数据可能丢失

appendfsync no
redis不主动进行同步,把同步时机交给操作系统

重写压缩

AOF 采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集

触发机制:设置重写的基准值(>=64M),文件达到基准值的%100时,开始重写

持久化流程

1.客户端的请求写命令会被append追加到AOF 缓冲区内
2.AOF缓冲区根据AOF持久化策略,将写操作同步到磁盘的AOF文件中;
3.AOF文件大小超过重写策略或手动重写时,会对 AOF文件 rewrite重写,压缩AOF文件容量

4.Redis 服务重启时,会重新 load 加载 AOF 文件中的写操作达到数据恢复的目的

优势:

1.备份机制更稳健,丢失数据概率更低
2.可读的日志文本,通过操作AOF稳健,可以处理误操作

劣势:

1.比起RDB占用更多的磁盘空间
2.恢复备份速度要慢
3.每次读写都同步的话,有一定的性能压力
4.存在个别 Bug,造成恢复不能

相关内容

热门资讯

测牛学堂:软件测试接口自动化之... requests库 用postman进行接口测试有一定的限制,我们测试更应该掌握的是用...
day36_jdbc 今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客...
【java基础】Stream流... 文章目录基本介绍流的创建流的各种常见操作forEach方法filter方法map方法peek方法fl...
幂等性通用组件 一、什么是幂等性幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,...
Nacos服务注册 又是美好的一天呀~ 个人博客地址: huanghong.top 本文预估阅读时长为3...
令人惊艳的ChatGPT项目,... 自从 ChatGPT、Stable Diffusion 发布以来,各种相关开源项目百花...
舆情监测系统有哪些优势,TOO... 舆情监测系统是一种基于大数据技术的舆情分析工具,可以帮助企业、政府等机构实时监控公众对...
【Linux】基础IO流(上) 文章目录1. 预备知识2. 回忆C接口fopenfputsfprintfsnprintf追加方式——...
设计模式(二十七)----行为... 1 概述 如上图,设计一个软件用来进行加减计算。我们第一想法就是使用工具类ÿ...
精心整理前端主流框架学习路径 版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog....
typescript声明 前言 “d.ts”文件用于为 TypeScript 提供有关用 JavaScript 编写的 API...
HashMap源码分析 Java源码系列:下方连接 http://t.csdn.cn/Nwzed 文章目录...
一、基础算法3:二分 模板题+... 文章目录算法模板整数二分算法模板浮点数二分算法模板模板题数的范围原题链接题目题解数的三次方根原题链接...
Essential C++复习... 好久没写代码了,很多东西都忘记了。复盘一下C++编写基础头文件 与 输...
三十五、DRF中的过滤、Dja... 一、DRF中的过滤 REST framework 的通用列表视图的默认行为是返回模型管理器的整个查询...
基于RZ/G2UL Corte... 以太网接口是一种广泛应用的网络接口,它可以在不同的场合实现不同的功能。例如࿰...
nginx-会话保持-3 基于LNMP在负载均衡集群上部署wordpress(低配版) 在讲解会话...
【BBuf的CUDA笔记】九,... 0x0. 背景 随着年纪越来越大,读代码越来越困难,如果你发现看不懂同事...
springboot: myb... 目录 需求01:  根据不同类型 查询不同的订单名, 1. 书写订单 类型转换方法   2. 使用方...
最前端|什么是低代码?与传统开... 目录一、低代码介绍二、背景趋势三、低代码与传统代码开发(一)低代码能否替...
物流成本总是超标?一招教你降本... 先来看一个数据,中国仓储物流管理指标与世界标杆数据对比 第三方物流比例:...
exec家族与system函数 exec家族函数NAMEexecl, execlp, execle, execv, execvp, ...
Pots 倒水问题 简单搜索&&进阶搜索 - Virtual Judge (vjudge.net) 【题目描述】 两个...
Linux内核通杀提权漏洞(C... 之前Linux官方爆出了"脏牛"漏洞(代号:Dirty COW,漏洞编号...
如何解决“sxs.dll错误”... 在使用计算机的过程中,可能会遇到各种各样的错误。其中一个常见的错误是“sxs.dll错...
【数据结构】夯实基础|线性表刷... 作者:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享...
自定义类型【C进阶】 文章目录😺结构体🟥结构体内存对齐内存对齐的规则内存对齐的意义修改默认...
latex 知识点总结 文章目录(一)latex 知识点总结(二)l...
【小猫爪】AUTOSAR学习笔... 【小猫爪】AUTOSAR学习笔记15-BswM模块前言1 BswM模块简介2 BswM功能简介2.1...
PMSM矢量控制笔记(1.2)... 前言:永磁同步电机的转子包括永磁体、转子铁芯、轴承等机械结构等,其转子可...