Spring + Redis + Mysql:缓存策略

时间:2016-09-08 09:48:36

标签: java mysql spring redis spring-data-redis

我正在开发一个用于医疗目的的Web应用程序,用户可以为特定患者,医生和设施创建预约。每个医疗机构可​​能有N名医生,每位医生将安排N个预约,并且还会显示每位医生的可用情况(例如:Doctor Who周三工作时间为9:00至12:00和15:00至18:00)。

对于前端部分,我使用fullcalendar,后端使用Struts2(控制器)+ Spring(依赖注入)+ Hibernate(DAO)。

由于用户(通常)必须将约会从本周加载到未来一个月或两个月,并且每个设施可能会有一到N个用户长时间使用此视图, d想使用Redis缓存约会+可用性,我已将Spring data redisLettuce客户端添加到我的项目中。我们的想法是使用@Cacheable@CachePut@CacheEvict注释来处理DAO的方法,处理用户操作,如list,创建和更新约会,避免redis数据和数据库之间的冲突数据和其他并发问题。

我的问题是:

  1. 这是正确的策略吗?
  2. 我是否应该实施自定义密钥生成器以缓存设施+医生ID上的约会?

1 个答案:

答案 0 :(得分:-1)

我从这里了解到,您希望在redis中缓存预约和可用性的单独数据,以便可以避免不必要的数据库调用并提高性能。

我在这里几点:

  1. 如果您的数据较少,那么它将无法提高性能,因为我认为redis服务器将被远程放置,并且它也有网络开销。因此,您可以选择任何InMemory Cache作为Guava缓存。

  2. 如果有大量数据使用,那么redis是有益的。 现在我来到第一点,如果这是正确的策略?我会说是的。 第二点,如果您需要实现自定义密钥生成器,则取决于以redis形式存储数据的唯一方式。 Redis是(关键,价值)商店。所以我认为约会将从(设施+医生ID)中唯一确定 你需要实现CustomKeyGenerator。

相关问题