文章目录什么是 Redis Stream?Redis Stream 的特点Redis Stream 的相关命令Streams 消息太多了怎么办?设置 Stream 的上限怎么避免消息丢失?如何标识消息处理完毕?如何做消息转移?坏消息问题,Dead Letter,死信问题信息监控,XINFO与Kafka(TM)分区的差异持久化,复制和消息安全性从Stream中删除单个项目零长度Stream同类型产
转载
2023-05-25 16:02:03
70阅读
Redis StreamRedis Stream 是 Redis 5.0 版本新增加的数据结构。 Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。 简单来说发布订阅 (pub/sub)
转载
2023-09-19 19:49:24
56阅读
很多时候,Redis出现访问延迟变大,都与我们的使用不当或运维不合理导致的。1、使用复杂度高的命令首先,查看一下Redis的慢日志。Redis提供了慢日志命令的统计功能,我们通过以下设置,就可以查看有哪些命令在执行时延迟比较大。首先设置Redis的慢日志阈值,只有超过阈值的命令才会被记录,这里的单位是微妙,例如设置慢日志的阈值为5毫秒,同时设置只保留最近1000条慢日志记录:# 命令执行超过5毫秒
转载
2023-08-30 08:19:20
46阅读
1. 前言Redis Stream 是 Redis 5.0 版本引入的一种新数据类型,同时它也是 Redis 中最为复杂的数据结构,本节主要对 Stream 做相关介绍。2. 什么是Stream?Stream 实际上是一个具有消息发布/订阅功能的组件,也就常说的消息队列。其实这种类似于 broker/consumer(生产者/消费者)的数据结构很常见,比如 RabbitMQ 消息中间件、Celer
转载
2023-07-04 16:58:53
0阅读
Redis是一个开源的内存数据库系统,常用于缓存、会话管理和消息队列等应用。在Linux环境下,我们可以通过使用C语言来操作Redis队列,实现高效的数据处理和通信。
在开发中,消息队列是非常常见的一种数据结构,它可以实现异步通信、解耦系统组件、削峰填谷等功能。Redis作为一款高性能的内存数据库,提供了丰富的命令来操作队列,能够快速地将数据存入队列、取出队列,实现消息的发布和订阅。
使用C语
原创
2024-05-23 10:10:18
21阅读
为什么要消息队列维基百科对消息队列的解释:简单的概括下上面的定义:消息队列就是一个使用队列来通信的组件。 上面的定义没有错,但就现在而言我们日常所说的消息队列常常指代的是消息中间件,它的存在不仅仅只是为了通信这个问题。消息队列常常被用来解耦服务之间的关系、控制资源合理合时的使用以及缓冲流量洪峰等等。简而言之,我们一般用消息队列来实现,异步处理、服务解耦、流量控制。1、解耦:生产者只负责生产消息,并
转载
2023-08-25 10:49:30
63阅读
1 先回顾一下Java原生自带的DelayQueue自己实现java.util.concurrent.Delayed这个接口,重写getDelay(计算剩余时间)方法,重写compareTo(比较哪个任务更早过期,计算优先级)方法。调用add()方法添加延迟任务,add()方法里面会调用offer()方法,offer()方法会调用q.offer(),q是PriorityQueue优先级队列,所以数
转载
2023-08-28 12:02:07
334阅读
适合的场景缓存:减轻mysql的查询压力,提升系统性能排行榜:利用redis的sortSet实现计算器,限速器:
利用redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等。这类操作如果用mysql,频繁的读写会带来相当大的压力限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用于抢购时,防止用户疯狂点击带来不必要的压力好友关系:
利用集合的一些命令,比如求
转载
2023-05-30 16:10:49
74阅读
文章目录前言一、关于消息队列1、应用场景2、如何设计消息队列二、Redis 消息队列解决方案1、基于 List 的消息队列解决方案2、基于 zset 的消息队列解决方案3、基于 Streams 的消息队列解决方案三、总结1、设计消息队列需要考虑的场景:2、常用的redis消息队列解决方案:3、redis 消息队列的困境4、redis 消息队列优点 前言消息队列要能支持组件通信消息的快速读写,而
转载
2023-08-15 10:40:28
104阅读
常用的锁有单体应用的简单锁synchronize,但是遇到分布式部署的项目时就会在大并发下出现安全问题,数据出现脏数据,此时可以考虑使用redis分布式锁,或者zookeeper锁 在实际开发中集群部署会出现的各种情况都会造成数据不安全,比如秒杀的库存等,或者服务器宕机或者重启,或者节点挂掉,这里使用redis分布式锁来实现锁机制第一步:导入redission依赖<dependency>
转载
2023-07-04 10:20:36
78阅读
场景有这样一个场景,一个邮件提醒的windows服务,获取所有开启邮件提醒的用户,循环获取这些用户的邮件,发送一条服务号消息。但问题来了,用户比较少的情况下,轮询一遍时间还能忍受,如果用户多了,那用户名称排序靠后的人,收到邮件提醒的消息,延迟时间就非常长了。准备c#之Redis实践list,hashtablec#之Redis队列方案1、生产者线程一获取所有开启邮件提醒的用户。2、根据配置来决定使用
转载
2023-10-24 10:26:08
108阅读
通常在一个jvm进程中,若想实现延迟逻辑,可以使用jdk自带的延迟队列DelayQueue来实现。DelayQueue中的元素PriorityQueue来实现的,DelayQueue中的元素会实现public interface Delayed extends Comparable<Delayed> {
/**
* Returns the remaining del
转载
2023-06-29 11:28:56
45阅读
什么是消息队列:消息(Message)是指在应用间传输的数据,消息可以包括简答的文本字符串,也可以有嵌入对象等,消息队列(Message Queue)是一种应用间的通信方式,用来监视消息是否发送成功,确保消息传出,并基于数据通信来进行分布式系统的集成。消息队列主流中间件:当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ
转载
2023-07-09 13:46:34
135阅读
分布式数据库中的CAP原理CAP+BASEC:Consistency(强一致性)A:Availability(高可用性)P:Partion tolerance(分区容错性)CAP理论图的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。CAP的理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于在分布式的项目下,不同的服务器之间的网
转载
2023-12-24 13:49:42
74阅读
1.Redis是单线程还是多线程? 我们在学习 Redis 时听得最多的就是 Redis 是单线程的,其实这种说法并不严谨。严格来说 Redis 单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程,包括Socket读,解析,执行
转载
2023-08-15 16:18:46
16阅读
//模拟并发list重复问题
public function test() {
$r = new r('api');
$r_key = 'test_zp';
//增加锁key
$r_key_lock = $r_key . '_lock';
echo 'start' . time();
if (!$r->EXISTS($r_key)) {
//todo 模拟执行
转载
2023-06-13 16:47:26
106阅读
2 创建类 创建接口IRedisCache.cs和RedisCache.cs using H.Emos.Common.Helper; using StackExchange.Redis; using System; using System.Collections.Generic; using Sy ...
转载
2021-08-16 18:09:00
643阅读
2评论
Redis的列表经常被用作队列,用于在不同程序之间有序地交换消息。一个客户端通过 LPUSH 命令将消息放入队列中
原创
2022-07-17 00:00:38
98阅读
RabbitMQ RabbiMQ是AMQP(高级消息队列协议)的消息中间件的一种,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。Redis队列 redis队列是一个是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Valu
转载
2023-06-13 15:50:33
132阅读
现在用的消息队列主要有kafka,rabbitmq和redis。相比另外两个,用redis做消息队列的优点是吞吐量高,延迟低,简单易用,易于部署和运维。缺点是没有ACK机制,可靠性方面不足。 本次用swoole + redis 来模拟个消息推送系统。思路1. 某个业务调用消息接口,将内容和对应的uid存入redis列表中,key为msg。 2. 用户连接swoole后,会有个fd来标识这个会话,
转载
2023-08-01 14:33:16
138阅读