Redis 构造了多种底层数据结构供使用,不同的数据类型有可能使用到多种底层数据结构存储,因此,需要理解为何 Redis 会有这样的设计,理解每个底层数据结构的概念之后,就能知晓在极端性能上如何做取舍。
    简介Redis 的底层数据结构主要以下几种:SDS(Simple Dynamic String, 简单动态字符串)ZipList(压缩列表)QuickL            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-14 20:49:58
                            
                                33阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1. 实现Kafka的生产者客户端:1.1 创建Producer生产者实例:一个正常的生产逻辑 需要具备以下几个步骤:配置生产者客户端参数 及 创建相应的生产者实例;构建待发送的消息;发送消息;关闭生产者实例。1.2 发送消息的步骤:消息构建好后,在通过 RdKafka::Producer::produce() 方法发往broker的过程中,需要先后经过 “序列化器、分区器、生产者拦截器”,最后到            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-28 11:46:00
                            
                                140阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、 kafka是消息中间件,原理就是一个队列用来保存所有发布的消息,等到客户端一上线就推送给客户端。发布订阅模式。所有消息都保存在磁盘上。 2、redis是非关系型数据库,也有发布订阅的功能。区别: kafka是保存在磁盘上,一般用于性能要求不高的场景(日志)而且kafka是保存在磁盘上,一般用于数据量很大的场合。而且kafka设置消息过期时间是以segment为单位的,不能对每个消息都设置过期            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-25 13:08:54
                            
                                71阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Redis,它首先是一个内存数据库,其提供的PUB/SUB功能把消息保存在内存中(基于channel),因此如果你的消息的持久性需求并不高且后端应用的消费能力超强的话,使用Redis PUB/SUB是比较合适的使用场景。比如官网说提供的一个网络聊天室的例子:模拟IRC,因为channel就是IRC中的服务器。用户发起连接,发布消息到channel,接收其他用户的消息。这些对于持久性的要求并不高,使            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-08 19:32:37
                            
                                100阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Kafka和Redis性能对比能力关于卡夫卡Kafka是一种分布式,分区和复制的提交日志服务,它提供消息传递功能以及独特的设计。我们可以在日志聚合过程中使用此功能。Kafka使用的基本消息传递术语是:主题:这些是发布消息的类别。
生产者:这是将消息发布到Kafka主题中的过程。
使用者:此过程订阅主题并处理消息。使用者是使用者组的一部分,该使用者组由许多使用者实例组成,以实现可伸缩性和容错能力。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-18 22:51:45
                            
                                153阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Kafka定义规则,检测是否满足规则,并且做出这个规则里所做的动作。【规则的计算和匹配性,一切皆动态规则】使用场景:实时推荐、实时风控、实时精准广告推送。[实时推荐] 冷用户访问 --> 给优惠券;[实时推荐] 只看不买 --> 促单;[实时推荐] 生成订单后未支付,给发短信。[实时风控] 某IP近1小时内注册账号超过10个; 某账号群体近1h内购买优惠券商品超过100件...1. k            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-06 21:07:47
                            
                                19阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             1、系统A(扣减托盘)【消息生产者】2、系统B(扣减押金)【消息消费者】业务描述:两套系统,A中扣减托盘,B中对应的要扣减押金;A中托盘归还,B中押金返还 利用消息队列来解决分布式事务过程:发送方【生产者】:(不关心接收方状态,只需要确定本地OK,消息推送即可)1、发送的消息首先需要入库(1⃣表结构:【消息ID,内容,相关事务的ID】)2、执行本地逻辑操作并commit,发送            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-28 09:25:33
                            
                                39阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            redis是一个基于内存的kv数据库,而kafka是分布式发布订阅消息系统.两者本身不是同样一个层次的东西。redis中有一个queue的数据类型,用来做发布/订阅系统,这个就可以和kafka进行比较了哈。存储介质不同redis queue数据是存储在内存,虽然有AOF和RDB的持久化方式,但是还是以内存为主。kafka是存储在硬盘上性能不同因为存储介质不同,理论上redis queue的性能要优            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-28 16:58:48
                            
                                156阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、项目说明1、需求实时更新每个用户走的总步数;每隔5s统计一次,包括某个用户新统计时的时间、所在地点、新增步数;这里为了方便只将每个用户以及实时更新的步数总和两个维度保存到redis数据库中;2、业务流程首先造一些模拟数据实时传入kafka队列,然后sparkStreaming从kafka实时读取这些模拟数据并做相关分析,最终将分析结果存入redis;3、大数据组件kafka: kaf            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-23 13:14:50
                            
                                103阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言描述 生产初级,Service服务较少,访问量较少,随着业务量的不断增加,日志量成倍增长,然后就遇到了消息队列redis被充爆,不能满足应用的情况。针对此情况,我们来分析下可用的消息多列。官方推荐消息队列 redis、kafka、rabbitmq。我们现在针对这三种进行比较。从消息订阅模式比较 Redisredis是基于内存的应用,消息都存放在内存中,写入读取速度快,但是受内存容量的限制,容易            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-10 13:16:11
                            
                                136阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            目录2.7 延时队列2.8 重试队列代码实现Kafka 高级特性-延时/重试队列 2.7 延时队列两个follower副本都已经拉取到了leader副本的最新位置,此时又向leader副本发送拉取请求,而leader副本并没有新的消息写入,那么此时leader副本该如何处理呢?可以直接返回空的拉取结果给follower副本,不过在leader副本一直没有新消息写入的情况下,followe            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-11 09:51:24
                            
                                79阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
              优秀设计之基于NIO编程 Kafka 底层的 IO 用的是 NIO,这个事虽然简单,但是也需要提一提。我们开发一个分布式文件系统的时候避免不了需要思考需要什么样的 IO?BIO 性能较差,NIO 性能要比 BIO 要好很多,而且编程难度也不算大,当然性能最好的那就是 AIO 了,但是 AIO 编程难度较大,代码设计起来较为复杂,所以 Kafka 选择的是 NIO,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-10 17:32:16
                            
                                209阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             一、Kafka线上集群部署方案既然是集群,那必然就要有多个Kafka节点机器,因为只有单台机器构成的kafka伪集群只能用于日常测试之用,根本无法满足实际的线上生产需求。 操作系统:kafka由Scals语言和Java语言编写而成,编译之后的源代码就是普通的.class文件,文本部署到哪个操作系统应该都是一样的,但是不同操作系统的差异还是给Kafka集群带来了相当大影响。&n            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-26 18:00:34
                            
                                34阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             一个topic中有可以有多个分区。如上图:每个分区中保存的消息都是有序的,在每个分区中都有一个offset,在comsume中维护offset。分区中的消息不会像其他消息队列一样消息完就丢失,而是将其保存,在指定的过期时间点内进行丢弃。分区的特点:首先这使得每个日志的数量不会太大,可以在单个服务上保存。另外每个分区可以单独发布和消费,为并发操作topic提供了一种可能。每个分区中的主从            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-25 14:05:24
                            
                                38阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言  高可用需要解决的问题主要有单点故障和大流量。Redis部署架构实现备注单点部署单点启动可能造成单点故障主从复制Slave主动请求,通过RDB同步流量大导致RDB文件过大,同步慢Codis代理模式+主从复制分桶1024个,不支持KEYSRedis Cluster去中心化,客户端分片分桶16384,不支持SELECT,官方出品Codis架构  Codis-HA作为协调者也可能出现单点故障,同样            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-25 15:35:42
                            
                                182阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            第三:Redis 发布订阅除了表示不同的topic 外,并不支持分组,比如Kafka中发布一个东西,多个订阅者可以分组,同一个组里只有一个订阅者会收到该消息,这样可以用作负载均衡。第四:Redis,它首先是一个内存数据库,其提供的PUB/SUB功能把消息保存在内存中(基于channel),因此如果你的消息的持久性需求并不高且后端应用的消费能力超强的话,使用Redis PUB/SUB是比较合适的使用            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-28 14:04:30
                            
                                22阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、rabbitmq和kafka区别1、架构rabbitmq遵循AMQP协议,以broker(exchange、binding,queue)为中心,有消息确认机制(confirm),生产者发消息,broker就返回确认。queue消息推送至消费者。kafka遵循MQ协议,以consumer为中心,批量拉取消息。没有消息确认机制。2、吞吐量kafka高吞吐量,批量处理。rabbitmq支持事务,可靠            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-25 08:28:19
                            
                                21阅读
                            
                                                                             
                 
                
                             
         
            
            
            
                     在开发java SparkStreaming的时候一定会遇到kafka偏移量管理的问题上,因为需要考虑到各式各样的容灾处理。如果我们采用kafka来自行处理kafka偏移量的话非常简单,因为kafka本身就有这个机制可以定时存储消费者分组的偏移量,但是这样会有重复消费的情况还有就是如果采用这种方式那么就是将kafka的offset            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-30 20:39:59
                            
                                71阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
              最近面试蚂蚁金服一面的时候,和面试官聊项目问题的时候,发现我这边业务实现的top100场景好像没有实现exactly once语义,我们项目的offset是存储在zk中,然后业务处理完毕后,最后再提交offset更新到zk,这种时候就会出现一个问题就是如果业务处理完毕,数据已经更新到redis中进行了累加,然后offset更新zk没成功宕机了,再次重启的时候就会读取老的offset导致数据重复            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-18 05:39:29
                            
                                31阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            redis push/pop VS pub/sub(1)push/pop每条消息只会有一个消费者消费,而pub/sub可以有多个对于任务队列来说,push/pop足够,但真的在做分布式消息分发的时候,还是pub/sub吧。(2)从编程角度看,pub/sub中sub通道需要保持长连接,而push/pop,  pop需要Consumer进程定时去刷新。前者可以满足实时要求,但是对编程架构有要            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-07 22:04:23
                            
                                124阅读