码农百科 缓存击穿

sheridan · 2023-08-03 17:35:23 · 热度: 9

缓存击穿是指一个存在的key,在缓存过期的一刹那,同时有大量的请求,这些请求都会击穿到 DB ,造成瞬时DB请求量过大的问题。

解决缓存击穿的常见策略有:

  • 设置热点数据永不过期:对于一些热点数据,可以设置为永不过期,或者是手动进行更新。

  • 互斥锁:在第一个查询请求查询数据库并把数据缓存的过程中,其他的查询请求等待,直到缓存中有数据后再从缓存中获取。

  • 数据预热:在系统上线前,就将可能成为热点的数据加载到缓存中。

  • 使用分布式缓存:比如使用 Memcached 集群,利用其分布式的特性,使得整个缓存服务的压力能够分散到多个缓存节点上,降低单个缓存节点的压力。

  • 使用缓存模板:比如Spring Cache中的@CachePut@CacheEvict ,可以在更新数据时同时更新缓存,避免数据和缓存的不一致性。

  • 使用缓存框架或中间件提供的原子操作:比如 Redis 的事务或 Lua 脚本,可以保证操作的原子性,避免并发操作导致的问题。

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册