38|缓存综合应用:怎么用缓存来提高整个应用的性能?
面试准备
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何通过优雅地使用缓存来提高应用性能,并在面试中脱颖而出。作者提出了一些特色的缓存方案,建议读者在面试准备中寻找适合使用请求级别缓存或会话级别缓存的场景,并尝试优化性能。此外,建议读者设计有特色的缓存方案,如引入本地缓存并进一步引入一致性哈希负载均衡策略来提高缓存命中率和性能。文章还介绍了客户端缓存、业务相关缓存预加载以及缓存预热和预加载等内容,为读者提供了丰富的缓存优化思路和方法。在面试中,除了掌握缓存知识点外,还要有具体的缓存方案和案例支撑。作者提出了两个缓存方案:一致性哈希 + 本地缓存 + Redis缓存,以及Redis缓存降级成本地缓存。这些方案的设计理念、实施前后的性能数据以及与业界一般方案的比较都是面试时需要重点讨论的内容。读者可以按照从前端到后端,从微服务到数据库的思路来面试,展示在每个环节上如何利用缓存来提高性能。最后,读者被鼓励思考自己是否有使用过更有特色的方案,并根据业务特征设计一个全方位应用缓存的面试方案。
《后端工程师的高阶面经》,新⼈⾸单¥59
全部留言(4)
- 最新
- 精选
- 好运来redis降级为本地缓存中,监控到redis恢复之后,逐步把流量转移到redis中,这个流量切换的功能一般怎么实现?
作者回复: 这个简单,你可以在 Cache 里面维持住标记位,标记位 = 0 就是不用 Redis,用本地缓存,标记位 > 0,比如说 80,就是 80% 到 Redis。类似这样就可以的。
2023-09-16归属地:广东1 - sheep1. 会话级别缓存这里,Java使用Spring的Session-scope,那Go应该使用什么类型呢 2. 客户端缓存这里,可不可以建立socket,当服务端有数据变化时,通知到对应客户端。缺点就是可能通知到全部,而且socket连接数会很多
作者回复: 1. 可以考虑放 Session 里面 2. 最好通过消息队列之类的来通知。
2024-02-21归属地:广东 - 3.0的A7关于缓存命中率的统计,老师有什么好的方案吗?
作者回复: 如果你们公司规模比较大的话,可以考虑二次封装查询缓存的客户端。比如说在 GO 里面封装 redis.Cmdable 接口,在这里上报每次访问 Redis 是否命中了缓存的信息。 又或者说,你可以考虑刷个 KPI,就是在公司提供一致的缓存的接口,然后提供不同的实现,并且使用装饰器来提供一个上报缓存是否命中的实现。 如果没有这种统一的机制,可以考虑业务方自己记录,也就是每次调用缓存接口的时候,自己记录一下。
2023-10-08归属地:北京 - peter请教老师几个问题: Q1:订单请求返回以后,缓存已经失效了,支付请求怎么获取? Q2:对“会话”一直理解不太到位,“会话”什么时候算结束? Q3:客户端采用服务端的jar包,怎么就能够解决“服务端修改数据后客户端没有感知”的问题?
作者回复: 1. 它们是在一个请求内,是一个请求的两个步骤。 2. 你可以理解为,用户登录了就是一个会话,退出了就是结束了,但是你也可以自由控制这个粒度。 3. 服务端要通知各个 Jar 包,或者 Jar 包里面有一些监听机制去监听服务端的变更。
2023-09-15归属地:北京