【发布时间】:2020-04-05 18:54:45
【问题描述】:
我希望将 Redis 用作复杂数据的缓存。考虑这个例子,我想存储和检索 AssetType 数据。一个 AssetType 可以有多个 AspectType。所以,AspectType 本身就是另一个实体。这些将具有多对多的关系。
当我想将 AssetType 存储在缓存中时,我希望将 AspectType 存储在新的缓存中并以某种方式携带引用。因此,每个 AssetType 中都没有存储 AspectType 的副本。 基本上,结构应该是:
Cache1: AssetType
key: at1, value: {at1, sameple description, [referenceTo-asp1, referenceTo-asp2]}
key: at2, value: {at2, sameple description, [referenceTo-asp2, referenceTo-asp3]}
Cache2: AspectType
key: asp1, value: {asp1, sample description}
key: asp2, value: {asp2, sample description}
key: asp3, value: {asp3, sample description}
当我使用 JPA 通过数据库进行操作时,这非常容易。但是,在 Redis 中是否有任何有效的方法来做到这一点?
【问题讨论】:
-
难道不能宁愿使用像 H2 这样的内存数据库吗?然后你就可以使用你的工作 JPA 解决方案了。
-
(这不是一个直接的答案,因为它不在 Java 中......而且由于问题与 Java 无关,我相信您希望得到答案)如果您知道如何用 C 或 C++ 编写代码然后你可以创建一个简单的 Redis 模块(它看起来像一个简单的 30-60 分钟任务),它有一个包含所有 AspectType 的全局字典,然后在一个键中它将存储 AssetTypes 和指向 AspectTypes 的指针。您还可以修改 Redis 源以使用全局字符串字典(我认为他们试图做这样的事情,但最终决定不这样做),但同样,这需要您用 C 编写...
标签: java database spring-boot caching redis