七种武器:延迟队列的原理和实现总结
七种武器:延迟队列的原理和实现总结 本文探讨了延迟队列的概念和实现方式,从DelayQueue介绍到具体的实现方式包括Java的DelayQueue、.NET中的PriorityQueue、基于Redis的Key过期机制和ZSet结构、使用Quartz实现延时任务、以及基于RabbitMQ实现延迟队列等。文章指出延迟队列适用于需要延迟执行的场合,提到延时满足是一种高级快乐,有助于培养和付出。各种实现方式都展示了不同的延迟队列应用场景和技术实现,为读者深入了解延迟队列提供了丰富的参考和思路。
分布式丛林探险系列之 Redis 集群模式
分布式丛林探险系列之 Redis 集群模式 《黑客帝国4:矩阵重生》即将在北美上映,标志着黑客帝国系列的复活。文章讨论了黑客帝国系列对于人和机器关系的哲学探讨,以及影响后续电影的打斗桥段。随后详细介绍了Redis集群模式中的概念、一致性哈希算法和Redis哈希槽,解释了集群搭建过程和故障转移机制。总结指出Redis集群本质为一种服务器Sharding技术,通过哈希槽管理数据分片,节点间通过TCP通信并实现连接重定向,故障转移则由投票机制决定。文章深入浅出地阐述了这些复杂概念,展示了技术世界中的民主和科学做法。
分布式丛林探险系列之 Redis 主从复制模式
分布式丛林探险系列之 Redis 主从复制模式 本文介绍了Redis主从复制的概念及实战应用。主从复制可提供数据冗余、故障恢复、负载均衡和高可用等好处。Redis的主从复制可分为全量复制和部分复制,通过Docker-Compose搭建了一主两从的复制方案。文章强调了实践的重要性,指出在实际应用中可能会遇到延迟、数据过期、故障切换等问题,需要进一步探索和总结。
再话 AOP,从简化缓存操作说起 本文探讨了面向切面编程(AOP)在简化缓存操作中的应用。博主首先介绍了AOP的概念及其相关技术,然后通过一个缓存操作的例子,指出了传统缓存代码存在的问题,即读/写缓存与业务代码的耦合。为了解决这一问题,博主提出了一个基于 `DispatchProxy` 的 AOP 方案,通过创建一个 `CacheableAttribute` 特性,并使用动态代理,实现了在方法调用时自动对返回值进行缓存的功能。该方案使得业务代码中使用缓存变得更加简洁,无需关心缓存的具体实现细节。最后,博主提供了一个示例代码,展示了如何通过 AOP 实现缓存,并提到了其他第三方库如 `Unity`、`Castle`、`AspectCore` 和 `PostSharp`在实现 AOP 时的相似之处。此外,博主还提到了 `EasyCaching` 框架,并鼓励读者在有类似需求时使用该框架,同时也欢迎读者提出更好的想法或思路。
基于 WebSocket 和 Redis 实现 Bilibili 弹幕效果 本文作者 Payne 介绍了使用 .NET Core 和 Vue 构建基于 WebSocket 的聊天室的进阶项目——一个弹幕系统。由于项目需要实时数据推送以完成图表展示,作者选择了 WebSocket 和 Redis 技术。文章首先展示了服务端消息推送的实现,通过中间件循环从消息队列中取消息并群发至客户端。接着,作者讨论了使用 Redis 作为消息队列的原因,解释了不使用 RabbitMQ 和发布-订阅模式的理由,并展示了简单消息队列的实现。在前端实现部分,作者使用了 Canvas API 来绘制弹幕,并提供了前后端分离设计和静态文件中间件使用的示例。文章最后总结了通过这个项目引出的技术话题,如部署和跨域等。
Redis 缓存技术学习系列之 Lua 脚本 Payne在他的博客中分享了关于Redis中Lua脚本的学习,探讨了如何通过Redis内置的Lua解释器执行脚本,以及为什么选择脚本语言进行开发。他介绍了Redis中处理脚本的Eval系列和Script系列命令的用法,以及如何在Redis中使用Lua脚本进行交互。此外,他展示了如何通过具体案例演示Redis与Lua脚本的交互,并讨论了Lua数据结构与Redis数据结构之间的转换。最后,他分享了为什么使用Lua脚本以及在处理类型转换时的一些原则。整体而言,他强调了Lua脚本在Redis中的应用和重要性。
Redis 缓存技术学习系列之发布订阅 本文讨论了Redis中的发布-订阅模式,首先介绍了观察者模式及其实现,包括抽象主题、具体主题、抽象观察者和具体观察者的角色和功能。接着详细介绍了如何在C#中实现观察者模式。随后,文章引入Redis中的发布-订阅模式,解释了其概念,与观察者模式的联系以及相关的Redis命令,如PSUBSCRIBE、PUBLISH等。最后通过示例展示了Redis发布-订阅模式的实际操作过程。整体强调了设计模式的重要性以及Redis的发布-订阅模式与观察者模式的关联。
Redis 缓存技术学习系列之事务处理 本文讨论了Redis中的事务处理技术。在数据库事务部分解释了事务概念,ACID属性以及事务处理的重要性。在Redis中,事务可以看作是一个命令队列,通过MULTI开始一个事务,然后逐条向Redis提交命令,最后通过EXEC执行事务。Redis中的事务与传统事务类似,具有原子性和一致性。文章还介绍了悲观锁和乐观锁的概念,以及Redis中的check-and-set机制。另外,文章提及了如何管理Redis的键,包括惰性删除和定期删除策略,以及一些建议如临时键和普通键的使用等。
Redis 缓存技术学习系列之邂逅 Redis 这篇文章介绍了对传统关系型数据库的一些看法,引入了学习 Redis 缓存技术的决定。详细解释了 Redis 的定义、特点和优势,以及如何开始使用 Redis,包括编译和安装步骤。进一步介绍了 Redis 中支持的数据类型,如字符串、散列、列表、集合和有序集合,以及与键相关的命令。最后,作者强调了在学习技术时注重整体理解,留下细节问题在实际使用时查阅文档的重要性,并展望了对 Redis 的事务、脚本、发布/订阅和多语言使用的关注。