摘要: 实现一个消息队列 本来打算利用Redis发布订阅模式来实现一个简单的消息队列,但我在工作中根本没用Redis来做消息队列。有几点原因 1. 数据持久化。 2. Redis只会发送消息给在线的消费者,处于离线状态的消费者将不会收到消息就算恢复过来。 3. 没有ACK机制,发送者不知道消费者到底消费了吗 阅读全文
posted @ 2020-05-07 17:03 RstarYan 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 实现原理 有兴趣看Redis pub/sub源码的可以移步 "这里" ,有中文注释的哦,感谢作者的奉献。 订阅(Subscribe) 先直接上源码 主要做了两件事情 1. 判断新的channel是否存在于客户端的pubsub_channels中,如果不存在执行下面步骤 2. 将channel添加到客 阅读全文
posted @ 2020-05-07 17:01 RstarYan 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 发布订阅模式 发布订阅模式可以说是耳熟能详了,它是属于设计模式中的行为模式,最大的好处就是起到解耦的作用,发布者不用关心在消息产生之后需要做什么,发布者只需要在通道里说“我发布了”,不用管有什么业务逻辑需要处理也不用管有多少的逻辑要处理,很简单明了。 我们平时用来解耦业务的消息队列就是实现了发布订阅 阅读全文
posted @ 2020-05-07 16:59 RstarYan 阅读(805) 评论(0) 推荐(0) 编辑
摘要: Redis客户端使用RESP(Redis序列化协议)与Redis服务器进行通信,RESP在位于TCP之上,而网络模型上客户端和服务器是保持的双工的连接。如图1 而一个简单的请求/响应的串行通信模型如下图: 串行化通信 串行化通信比较简单,上面那张图就很表面的反应出来这种通信方式,同一个Connct 阅读全文
posted @ 2020-05-07 16:58 RstarYan 阅读(2574) 评论(0) 推荐(1) 编辑
$(function(){ $('#blogTitle h1').addClass('bounceInLeft animated'); $('#blogTitle h2').addClass('bounceInRight animated'); // 删除反对按钮 $('.buryit').remove(); initCommentData(); }); function initCommentData() { $('.feedbackItem').each(function() { var text = $(this).find('.feedbackListSubtitle .layer').text(); // 将楼层信息放到data里面 // $(this).find('.blog_comment_body').attr('data-louceng', text.replace(/^#/g, '')); if($(this).find('.feedbackListSubtitle .louzhu').length>0) $(this).addClass('myself'); var avatar = $(this).find('> .feedbackCon > span').html() || 'https://pic.cnblogs.com/face/sample_face.gif'; $(this).find('> .feedbackCon > .blog_comment_body').append('') }); } $(document).ajaxComplete(function(event, xhr, settings) { // 监听获取评论ajax事件 if(settings.url.indexOf('/mvc/blog/GetComments.aspx') >= 0) { initCommentData(); } });