扫描/迭代laravel的缓存以查找可能的密钥

lzfw57am  于 2021-06-07  发布在  Redis
关注(0)|答案(0)|浏览(360)

我尝试将一些列计数增量从mysql移到redis,然后使用一个worker每秒处理它们,并将聚合的增量(可能是批量)提交回mysql。我这样做的原因是,对同一行的更新往往会在我的应用程序中造成瓶颈,并且在达到每秒一定数量的请求后,性能会迅速恶化。
目前我能想到的最好的解决方案是创建缓存键,并随着每个请求增加它们,然后每秒处理它们。这样的密钥将如下所示: timestamp:table_name:column_to_be_incremented:id 然后,worker将每秒迭代一次,并每秒对每一行执行一次更新,而不是每秒执行大量更新,然后使已处理的缓存密钥无效(类似于队列)。
我之所以需要把这些数据放回mysql,是因为我正在根据这个值过滤超过10万行的数据,将这些数据与其他表连接起来,我真的不知道还能怎么做。
然而,问题是:我找不到任何好的解决方案来遍历缓存中的id。
我知道redis有一个扫描功能,我可以用来扫描所有需要在那一秒增加的id,比如: 1608293296:users:point_count:* …但我不确定这有多有效,我是否应该跳过laravel的缓存抽象层,直接转到redis。感觉有点不舒服:)
你对这个问题的看法将不胜感激。我也对解决这个问题的不同方法持开放态度,因为我预计很多应用程序都使用密集计数,我不应该重新发明轮子。
谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题