1. 我的项目中缓存是如何应用的?
常识发现平台的数据库信息建设在 neo4j 和 mysql 之上,多用户查问常识图谱实体和开掘实体间规定面临高性能和高并发的问题。
2. 为什么要用缓存?
用缓存,次要有两个用处:高性能、高并发 。
高性能
假如这么个场景,你有个操作,一个申请过去,吭哧吭哧你各种乌七八糟操作 mysql,半天查出来一个后果,耗时 600ms。然而这个后果可能接下来几个小时都不会变了,或者变了也能够不必立刻反馈给用户。那么此时咋办?缓存啊,折腾 600ms 查出来的后果,扔缓存里,一个 key 对应一个 value,下次再有人查,别走 mysql 折腾 600ms 了,间接从缓存里,通过一个 key 查出来一个 value,2ms 搞定。性能晋升 300 倍。就是说对于一些须要简单操作耗时查出来的后果,且确定前面不怎么变动,然而有很多读申请,那么间接将查问进去的后果放在缓存中,前面间接读缓存就好。
高并发
mysql 这么重的数据库,压根儿设计不是让你玩儿高并发的,尽管也能够玩儿,然而人造反对不好。mysql 单机撑持到 2000QPS 也开始容易报警了。所以要是你有个零碎,高峰期一秒钟过去的申请有 1 万,那一个 mysql 单机相对会死掉。你这个时候就只能上缓存,把很多数据放缓存,别放 mysql。缓存性能简略,说白了就是 key*value 式操作,单机撑持的并发量轻松一秒几万十几万,撑持高并发 so easy。单机承载并发量是 mysql 单机的几十倍。