17|业务脚本:为什么说可编程订阅式缓存服务更有用?
该思维导图由 AI 生成,仅供参考
缓存即服务
- 深入了解
- 翻译
- 解释
- 总结
可编程订阅式缓存服务是一种新颖的数据缓存方式,通过自行实现数据缓存服务,可以根据业务需求主动缓存数据并提供数据整理和计算的服务。相比传统的内存缓存服务,可编程缓存具有更好的性能和效果,能够节省内存、减少网络交互耗时,适合实时要求极高的场景。通过Lua脚本引擎,可实现高性能、可热更新的脚本服务,提高业务灵活度。同时,通过统一管理加载过Lua的脚本及LState脚本对象的实例对象池,可以更好地管理和提高效率,提高服务的并行处理能力。这种缓存服务的实现方式能够为业务服务带来新的思考,为读者提供了一种全新的数据缓存解决方案。 文章还介绍了如何通过lua脚本引擎实现数据交互和交换,以及如何加载数据进行缓存预热,包括使用离线文件、数据表和内存磁盘等方式。此外,还讨论了订阅式数据同步、周期任务和如何让Go的协程访问一个LState保存的数据。通过这些方法,可以实现高性能、实时交互的缓存服务,满足不同场景的需求。 总的来说,本文介绍了可编程订阅式缓存服务的实现方式,以及如何通过lua脚本引擎和其他技术手段实现数据交互、缓存预热、数据同步和周期任务,为读者提供了全面的技术视角和实践指导。
《高并发系统实战课》,新⼈⾸单¥59
全部留言(3)
- 最新
- 精选
- 黄堃健老师,有什么开源的go服务使用lua来做业务缓存。这样真正看看人家怎么玩,踩坑相对少很多
作者回复: 你好,堃健,目前我看到的都是内部缓存或者游戏服务端使用,可以关注一下这个 https://github.com/yuin/gopher-lua 项目看看是否有帮助
2024-02-22归属地:广东 - 普通熊猫 ଘ(੭ˊ꒳ˋ)੭✧与其在golang的项目中引进redis,然后对外提供类似于redis的简单协议,并且自己实现一套内存数据的加载逻辑,为什么不考虑直接用lua订制redis?会不会更简单一些😂
作者回复: 你好,熊猫,lua在redis中使用起来很不简单,实际操作后就会有深切的感受,同时需要lua支持队列等功能,具体有很多事情需要做。这种实现已经从数据层服务变成了应用层,所以有些地方总是会难受一些。
2023-03-14归属地:北京 - zhou问题1、文中的可编程缓存可以把数据结构化存在map中,相比传统模式序列话串要省内存。我想问下有些对象格式是无法存在map格式中的,另外map的方式跟json的方式存储大小上应该没有很大区别。 问题2、我是java语言,用redis缓存数据,我认为业务缓存修改后实时生效是可以直接重新拉去即可。
作者回复: 你好,zhou,第一个问题:结构化数据确实比序列化后省空间(比如int和字符串保存的int字节大小不一样)同时有内存对齐优势,map只是个容器方便做hash查询对象使用,json是个序列化格式,他会把我们的数据二进制翻译成字符串方便传输结构化数据。第二个问题,使用外缓存缺点是有网络RTT延迟5ms至少,本地内存比网络速度快 能到纳秒微秒级别,另外,这里主要是你不知道什么数据什么时候有更新,所以只能每次请求去拉取才可以达到数据实时生效
2023-02-10归属地:浙江2