Caching 在峰值负载期间更新大量缓存(Redis)数据的最佳方法?

Caching 在峰值负载期间更新大量缓存(Redis)数据的最佳方法?,caching,redis,offloading,Caching,Redis,Offloading,环境:多个web 30、缓存8服务器和一个专用数据库服务器 要卸载数据库,需要一个中央Redis缓存和本地内存缓存 大型公共事件数据将根据计划进行缓存和更新 用户特定的数据在访问时单独缓存 当由于事件而更新大量用户特定的数据需求时,会出现问题 约有20万注册用户,事件发生时约有10-20万同时来到现场。平均每个用户有5个缓存键,总共有50K到100K个缓存键,其中包含需要更新的用户特定数据 当前解决方案失败: 刷新用户缓存会使数据库超载30个Web服务器 将所有数据加载到缓存需要很长时间,仅使用

环境:多个web 30、缓存8服务器和一个专用数据库服务器

要卸载数据库,需要一个中央Redis缓存和本地内存缓存

大型公共事件数据将根据计划进行缓存和更新 用户特定的数据在访问时单独缓存 当由于事件而更新大量用户特定的数据需求时,会出现问题

约有20万注册用户,事件发生时约有10-20万同时来到现场。平均每个用户有5个缓存键,总共有50K到100K个缓存键,其中包含需要更新的用户特定数据

当前解决方案失败:

刷新用户缓存会使数据库超载30个Web服务器 将所有数据加载到缓存需要很长时间,仅使用了10% 键和扫描可以阻止尚未尝试的缓存。。。这是个问题吗?
在这种情况下,最好的做法是什么?

IIUC,您正在尝试进行50000次/秒的SET操作-Redis应该能够在没有任何特殊技巧的情况下维持这种吞吐量。还要注意的是,扫描没有阻塞,只有键是。@ItamarHaber我知道,问题是收集所有信息。。。这需要时间。很高兴知道扫描没有阻塞。。。我是由StackExchangeRedis文档中的行触发的,无论哪种方式,扫描和键都需要扫描整个键空间,因此应该避免在生产服务器上使用,或者至少针对从机。探索替代方案。