如何在Spring Boot应用程序中实现Redis分布式缓存,这将允许像RDBMS一样查询缓存的数据

时间:2019-08-19 11:38:08

标签: caching redis spring-data-redis distributed-caching

我有下面的2层spring引导应用程序,希望使用redis实现分布式二级缓存,以提高性能。 [Spring Boot体系结构] [1]
   在这里,我们使用kubernates,因此可能存在“原子服务A”的多个实例,因此需要分布式缓存。 尽管在数据库中修改数据的请求可能很少出现,但同样需要反映在cache中。 想知道是否有redis的标准解决方案来像从传统RDBMS那样获取数据。 这里的假设解决方案类似于在启动时,“学生原子服务A”将从Redis cache上的DB加载学生数据,然后任何后续删除/更新都应首先在Db中执行相同的操作,然后在Redis中进行更新我也应该以查询Redis的方式从RDBMS获取记录。 例如select * from student where id <10

如果有人可以在此处指出示例实现的任何提示,那就太好了。

我已经浏览了许多站点,但是他们只谈论键值问题,但是希望找到一种类似DB Query的解决方案,从缓存中返回查询结果。 我已经用RedisTemplate尝试过POC,但是找不到像我们查询数据库一样的api。从id <= 5

的学生中选择*

看不到任何API,它允许我对RDBMS进行类似redis cache API的操作

1 个答案:

答案 0 :(得分:1)

  

看不到任何允许我执行RDBMS等操作的API   使用Redis缓存API

典型的RDBMS(例如MySQL,Oracle等)和Redis是具有不同数据模型和查询语言的不同数据存储,因此它们实际上是持久性数据存储,实际上没有任何共同之处。您可以将两个不同级别的抽象与这些数据存储集成在一起。一种抽象是在存储库级别上-像Spring Data Redis这样的框架。对于Spring Data Redis存储库,请检查hereHibernate Data之类的框架提供了另一种抽象,该框架通过Hibernate OGM Redis与Redis集成 模块。这将更接近您的期望,因为它将为您提供丰富的JPQL查询语言(它与SQL非常相似,只不过它对对象而不是对元组进行操作)。这可能值得一试。