1.真的需要缓存吗?
缓存就是一种快速响应的技术,本质上是存储数据的原始集,便于访问
任何技术的引入都会带来新的复杂度的提升。
结论
- 愿意花费一些内存来提高速度。
- 数据中某些会被频繁调取
- 缓存中存放的数据总量不会超出内存容量?
2.什么场景下要使用缓存:
CPU占用高:解决CPU的频率与内存访问速度的不一致
数据库占用或网络访问过高:数据库连接池繁忙,近期数据缓存,直接获取,避免请求验证返回的过程消耗
分布式缓存等等
我们是否需要缓存:原因:结论:需要
3. 缓存用哪个? 和 我们当前缓存的使用场景
static或者map做缓存
对于本地缓存来说,如果不需要淘汰算法则选择ConcurrentHashMap,例如我们的名字 NameGenerator
如果需要淘汰算法和一些丰富的API,Caffeine。
我们当前缓存的使用场景
使用无淘汰缓存:NameGenerator使用了初始化时从数据库缓存到ConcurrentHashMap中,检查名称是否可用时使用,减轻高并发时数据库的请求压力 (可不可以使用 caffiene 无界缓存,性能会不会更好)
使用guava cache ,
使用场景
减少频繁登录对数据库的访问
写少读多
1.进入场景时会获取缓存
2.邮箱服务发送时不在线会获取缓存,日志服务使用时,
3.其他服初始化玩家数据时和机器人数据构建时
4.GM线上业务使用时
每5分钟保存一次到缓存,1天失效
4.guava 和caffeine的区别在哪
5.结论:caffeine是否替换
1.无成本替换,API接口非常接近
