Redis 回写缓存仍然是一项手动任务?

标签 redis scalable

我正在做一项作业。 REST API(在 Spring 中开发)有一个 m() 方法,它模拟一个人清洁 window 。最后,清洁工必须在 window 上写下一个独特的短语(一个字符串)。所有清洁工写的短语最终都保存在 MySQL DB 中。因此,每次执行 m() 时,都会对数据库进行查询以获取迄今为止写入数据库的所有短语。 cleaner 方法 m() 然后生成一个随机字符串作为短语,在查询的短语中检查它以确保它的唯一性并将其写入数据库。因此,每个 m() 有一个查询来获取所有短语,一个查询来写入短语。两者都发生在同一张 table 上。

这是一个可以利用缓存的场景,我就上了Redis。我还认为写回缓存是最好的解决方案。因此,每次写入都会发生,它发生在缓存而不是数据库中,并且每次读取也都发生在缓存中。可以每小时在一个新线程中(或可配置的东西)将缓存复制到数据库。我在读Can Redis write out to a database like PostgreSQL?几年前,您似乎必须手动执行此操作。

我的问题:

  1. 手动执行此操作仍然可行吗?如果没有,有人可以 指向我可以使用的 Redis 资源?

  2. 如果需要手动操作,这就是我计划实现的方式。是否理想?

    每小时写入的短语将附加到 Redis 中的对象列表(用户标识、短语)中,午夜至凌晨 1 点的列表将称为 phrases_1,凌晨 1 点至凌晨 2 点的列表将称为 phrases_2,依此类推。每小时一个后台线程会将整个小时的列表写入数据库。每次需要提取所有短语进行检查时,我都会从缓存中加载当天的所有列表,例如phrases_1, phrases_2 循环并合并它们。 (稍后当用户数量增长时——我将不得不进行分片,但这不是我的当务之急)。

谢谢。

最佳答案

检查 https://github.com/RedisGears/rgsync (和 https://redislabs.com/solutions/use-cases/caching/ )试图解决回写和直写的情况。 我尚未进行功能测试。

同样有趣的是,2020 年 CMU 论文 (https://www.pdl.cmu.edu/PDL-FTP/Storage/2020.apocs.writeback.pdf) 声称“writeback-aware 缓存是 NPcomplete 和 Max-SNP hard

关于Redis 回写缓存仍然是一项手动任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56106965/

相关文章:

python - 如何使用tornado python将用户输入数据保存到redis

redis - Azure Redis 缓存是否在到期时刷新项目

node.js - 将 backbone.js 与 socket.io 一起使用

node.js - 如何使用 llen 命令结果插入 rpush 的数据?

html - 缩放 CSS header

redis - 如何让kubernetes外部可以访问redis集群?

javascript - 如何使用 window.open 应用样式并使窗口可缩放

window - 如何为设备独立像素 (DIP) 构建 Windows 应用商店应用

linux - gnuplot gif 无法使用 ttf 字体缩放