请教各位大佬一个问题。我这个业务的数据库变化很频繁,比较频繁吧,通常几秒就会变化一次,要及时推送到前台。现在用的方法是每 1 秒查询一次数据库,如果有变化,就显示出来。
感觉这种做法不是很专业,特别是当很多 Client 共同使用前台时,查询频率很高,数据库负载增加。
前几天在外面吃饭,看到那种扫二维码一起点单,很多人扫了码,共同点单,有一个人点提交的话,这个“已提交”的通知会瞬间推送到所有正在使用前台点单的用户,这个是怎么实现的啊?难道也是每 1 秒查询一次吗?
求大佬解释和推荐有没有别的专业的做法?
1
wjfz 2019-01-07 17:57:36 +08:00
WebSocket
|
2
jmk92 2019-01-08 00:37:34 +08:00 via iPhone
架一层缓存层,数据存入读取都是走缓存,主动同步数据库里,你就算 0.1 秒查一次也无妨。
|
3
master13 OP @wjfz 学习了一下,能解决部分问题。但是即使服务端用 websocket 主动向 client 推送数据,服务端仍然需要频繁查询数据库,是把频繁的 jquery 移动到了服务端来做,感觉性能并没有得到提高。
|
4
master13 OP @jmk92 是主流的做法,目前我的做法是服务端每 1 秒查询一次,产生一个中间文件保存在服务端,比如叫 temp.txt 或者 result.json 之类的吧,然后客户端实际上是访问这个文件。访问文件有时候会遇到客户端浏览器缓存的问题,更新的他拿不到,很烦。
请问“缓存层”有哪些业内惯用或者推荐的吗? |
5
tianyou666shen 2019-01-08 09:19:35 +08:00
文件 io 很慢的 缓存层说的是内存缓存产品 redis memcache 了解下?
|
6
master13 OP @tianyou666shen 学习了,感谢
|