ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

OpenResty-lua-cache-lua-redis-sub

2022-02-27 21:58:13  阅读:182  来源: 互联网

标签:缓存 sub 访问 cache redis lua openresty


前言

对于一个 JAVAER来说,肯定都搞过并发吧,对于高并发而言,目前大家都知道的几种解决方案,如下几种

1:缓存

降低DB的访问频率,比如说redis等

2:多线程

提升task处理速度

3:加机器

通过负载均衡–治标不治本,土豪随意

4:消息队列

削峰填谷

接下来我要给大家介绍一款开源的,基于nginx做了增强的,由国人研发的,很多大厂使用的 openResty,可以使用其中的一些模块去做实现相应的需求,比如说缓存,访问redis,mysql 等等

实现部分

1:安装

自行跳转 http://openresty.org/cn/installation.html

2:lua-cache

通过lua脚本去访问缓存

1:修改nginx.conf

img

nginx.conf

2:增加一个testCache.lua文件

img

testCache.lua

3:测试一下,访问地址 localhost/testCache 测试结果,和预期一样

img

测试结果

然后前端请求就一直访问这个接口,那么服务器端的接口的压力自然就小了,多余的一些性能可以去做其他的任务,性能可以得到一部分提升。

听起来也是挺不错的,那么问题来了,这个缓存我什么时候更新呢?相比需要一个时间来触发这个缓存的更新,接下来使用 redis-sub 来解决这个问题

3:lua-redis-sub

再次声明一下哈,openresty是支持各种lua脚本的,而lua脚本是可以提供了访问redis/redis-cluster的接口的,在这里我们使用redis的订阅发布去做

1:编辑订阅访问接口,访问地址 localhost/sub

img

2:编写sub.lua

img

sub.lua

3:nginx -s reload 重启 openresty (我这里是windows),访问地址 localhost/sub,发现一直在转圈,这个时候就是 reply 起了作用

img

阻塞

4:随便创建一个项目,只要可以使用最简单的redis客户端jedis就行了,这里只做演示,在生成中肯定不是这么做的,编写如下代码,只要可以发布一个事件就行了。

img

发布事件

5:发布一个事件,浏览器相应如下,返回的数据正确。

img

返回结果

3:流程梳理

img

流程图

总结

此篇分享的是openresty的 cache,redis-sub 内容,希望可以帮助有需要的,后续会持续更新openresty其他部分的内容,设计到缓存风暴,锁,redis-cluster 等,喜欢的大佬们可以关注,留言,转发哦~

标签:缓存,sub,访问,cache,redis,lua,openresty
来源: https://blog.csdn.net/weixin_45191798/article/details/123171419

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有