redis
文章平均质量分 92
蔡蔡开始内卷
这个作者很懒,什么都没留下…
展开
-
Redis 内存管理
Redis的同学应该都知道,它基于键值对的内存数据库,所有数据存放在内存中,内存在Redis中扮演一个核心角色,所有的操作都是围绕它进行。我们在实际维护过程中经常会被问到如下问题,比如数据怎么存储在Redis里面能节约成本、提升性能?Redis内存告警是什么原因导致?原创 2022-12-01 10:43:47 · 732 阅读 · 0 评论 -
redis-集群理论篇
当客户端向一个错误的节点发出了指令,该节点会发现指令的key所在的槽位并不归自己管理,这时它会向客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点去获取数据。客户端收到指令后除了跳转到正确的节点上去操作,还会同步更新纠正本地的槽位映射表缓存,后续所有key将使用新的槽位映射表。原创 2022-11-02 20:19:01 · 593 阅读 · 0 评论 -
redis-基于docker搭建redis集群
学习了redis的主从,哨兵之后,学习redis高可用的最后一篇集群。学习集群不着急,先来看看怎么搭建集群。现在都讲究容器化部署,咱也来试试基于docker搭建redis集群。ps:我只有一台虚拟机,所以。。。。。将就一下。原创 2022-11-02 11:41:38 · 790 阅读 · 1 评论 -
Redis为什么变慢了?如何排查Redis性能问题
排除网络原因,如何确认你的 Redis 是否真的变慢了?首先,你需要对Redis进行基准性能测试(什么,你没有做过!!!!),了解你的 Redis 在生产环境服务器上的基准性能。基准性能就是指Redis在一台负载正常的机器上,其最大的响应延迟和平均响应延迟分别是怎样的?方式一:redis-cli --intrinsic-latency方式二:redis-benchmark你应该也发现了,Redis的性能问题,涉及到的知识点非常广,几乎涵盖了CPU、内存、网络、甚至磁盘。原创 2022-11-01 22:12:26 · 2488 阅读 · 0 评论 -
redis特性-事务
可以一次执行,本质是一组命令的集合。一个事务中的所有命令都会序列化,按的执行而不会被其他命令插入。Redis中,单条命令是原子性执行的,但事务,且。事务中。有着密切的关联,因为一些列回滚操作、像事务隔离级别那这样加锁、解锁,是非常消耗性能的。原创 2022-11-01 16:40:58 · 467 阅读 · 0 评论 -
Redis高级特性—HyperLoglog解决统计问题
在Redis的实现中用到的是16384个桶,也就是2^14,每个桶的maxbits需要6个bits来存储,最大可以表示maxbits=63,于是总共占用内存就是字节。目的是做基数统计,故不是集合,不会保存元数据,只记录数量而不是数值;耗空间极小,支持输入非常体积的数据量,最终数值存在一定误差;redis中每个占用了12K的内存用于标记基数;pfadd命令并不会一次性分配12k内存,而是随着基数的增加而逐渐增加内存分配;而pfmerge操作则会将source key合并后存储在12k大小的key。原创 2022-10-27 16:16:04 · 790 阅读 · 0 评论 -
redis高级特性-bitmap
在我们平时开发过程中,会有一些bool型数据需要存取,比如用户一年的签到记录,签了是1,没签是0,要记录365天。如果使用普通的key/value,每个用户要记录365个,当用户上亿的时候,需要的存储空间是惊人的。为了解决这个问题,Redis 提供了数据结构,这样每天的签到记录只占据一个位,365天就是365个位,46个字节 (一个稍长一点的字符串) 就可以完全容纳下,这就大大节约了存储空间。原创 2022-10-27 15:06:21 · 1308 阅读 · 0 评论 -
大key对持久化的影响
当 AOF 写回策略配置了Always策略,如果写入是一个大 Key,主线程在执行fsync()函数的时候,阻塞的时间会比较久。AOF 重写机制和RDB 快照的过程,都会分别通过fork()函数创建一个子进程来处理任务。会有两个阶段会导致阻塞父进程:创建子进程的途中,由于要复制父进程的页表等数据结构,页表越大,阻塞的时间也越长;创建完子进程后,如果父进程修改了共享数据中的大 Key,就会发生写时复制,这期间会拷贝物理内存,由于·大 Key ·占用的物理内存会很大。大 key 除了会影响持久化。原创 2022-10-26 16:51:36 · 147 阅读 · 0 评论 -
redis-持久化竟然还会这样
在RDB中是以快照的形式获取内存中某一时间点的数据副本,在创建RDB文件的时候可以通过save和bgsave命令执行创建RDB文件。,这样也能。如:数据库中包含3个键k1、k2、k3,并且k2已经过期,那么创建新的RDB文件时,程序只会将k1和k3保存到RDB文件中,k2则会被忽略。原创 2022-10-26 10:44:16 · 400 阅读 · 0 评论 -
goframe使用lua脚本
Lua是一个高效的轻量级脚本语言。Redis中使用 Lua 的好处减少网络开销,在 Lua脚本 中可以把多个命令放在同一个脚本中运行;原子操作,Redis 会将整个脚本作为一个整体执行,中间不会被其他命令插入(编写脚本过程中无需担心会出现竞态条件)复用性,客户端发送的脚本会永远存储在 Redis中,意味着其他客户端可以复用这一脚本。Redis Lua脚本与事务从定义上来说, Redis 中的脚本本身就是一种事务, 所以任何在事务里可以完成的事, 在脚本里面也能完成。原创 2022-09-06 00:34:59 · 413 阅读 · 0 评论 -
别问redis内存满了怎么办
分析:你redis只能存数据,可是你写了,那会删的数据。怎么删的,这个问题思考过么?还有,你的数据已经设置了过期时间,但是?原创 2022-08-12 17:28:53 · 1346 阅读 · 0 评论 -
redis-延迟队列
rocketmq在发送延时消息时,是先把消息按照延迟时间段发送到指定的队列中(把延时时间段相同的消息放到同一个队列中,保证了消息处理的顺序性,可以让同一个队列中消息延时时间是相同的,整个RocketMQ中延时消息时按照递增顺序排序,保证信息处理的先后顺序性。延迟队列可以通过 zset 来实现,因为 zset 中有一个 score,我们可以把时间作为 score,将 value 存到 redis 中,然后通过轮询的方式,去不断的读取消息出来。移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。...原创 2022-08-04 11:53:21 · 7379 阅读 · 0 评论 -
redis-消息队列
如果采用 List 当作队列,消息积压时,会导致这个链表很长,最直接的影响就是,Redis 内存会持续增长,直到消费者把所有数据都从链表中取出。但 Kafka、RabbitMQ 这类消息队列就不一样了,它们的数据都会存储在磁盘上,磁盘的成本要比内存小得多,当消息积压时,无非就是多占用一些磁盘空间,相比于内存,在面对积压时也会更加坦然。因为 Redis 的数据都存储在内存中,这就意味着一旦发生消息积压,则会导致 Redis 的内存持续增长,如果超过机器内存上限,就会面临被 OOM 的风险。...原创 2022-08-04 09:09:00 · 922 阅读 · 0 评论 -
数据库和缓存的一致性问题
一旦决定使用缓存,那必然要面临一致性问题,任何一种解决方案都无法保证绝对意义上的数据一致性。“性能和一致性就像天平的两端,无法做到都满足要求。”缓存和数据库的一致性问题不是一成不变的,分析一致性问题,需要考虑以下3点缓存数据库操作的。缓存有两种模式读写缓存、只读缓存。读写缓存若要对数据进行,需要在Cache进行。同时根据采取的写回策略,决定是否同步写回DB。只读缓存若要对数据进行,只需在DB进行。同时根据缓存更新策略,决定何时更新或者删除。...原创 2022-08-02 10:38:09 · 729 阅读 · 0 评论 -
三种经典的缓存使用模式
缓存可以提升性能,缓解数据库压力,但是使用缓存也会导致数据不一致的问题,一般我们是如何使用缓存呢?原创 2022-08-01 20:01:14 · 493 阅读 · 0 评论 -
Redis缓存三大问题
日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题。一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度问题有严重的性能弊端,在这一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。缓存穿透、缓存击穿和缓存雪崩。...原创 2022-08-01 16:35:46 · 185 阅读 · 0 评论 -
redis-哨兵模式
sentinel会为每个被监视的主服务器创建相应的实列,并创建连向主服务器的命令连接(向主服务器发送命令)和订阅连接(接受指定频道消息)。sentinel通过向master发送Info命令,获取master和它下面所有slave的当前信息。并为这些从服务器创建相应的实例结构,连向从服务器的命令连接和订阅连接。每隔10秒向master和从服务器发送info命令,当主服务器下线时或者sentinel对主服务器进行故障迁移操作时,sentinel向从服务器发送info命令的时间为1秒1次。注意。...原创 2022-07-22 10:19:29 · 597 阅读 · 0 评论 -
redis-主从同步
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。(redis有主从同步,从从同步)。数据冗余主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。,由。...原创 2022-07-21 15:28:09 · 1066 阅读 · 0 评论 -
Redis持久化方式
AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一起,都写入新的AOF文件,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。缺点RDB文件的致命缺点在于其数据快照的持久化方式决定了必然做不到实时持久化,而在数据越来越重要的今天,数据的大量丢失很多时候是无法接受的,因此AOF持久化成为主流。.....原创 2022-07-20 17:32:20 · 207 阅读 · 0 评论 -
redis-基本数据结构
除了它是,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理。原创 2022-07-19 20:54:19 · 389 阅读 · 0 评论