如何引入Redis仅用于缓存无积垢

如何引入Redis仅用于缓存无积垢,redis,spring-data-jpa,spring-data,jedis,Redis,Spring Data Jpa,Spring Data,Jedis,我计划使用Redis在我的应用程序中实现一个缓存层。现在,每当用户启动某个计划加载时,应用程序都会从数据库中获取大量数据。该计划在幕后加载,触发少量重量级数据访问,并在最终结果中协调所有调用 目前正在通过JPA存储库进行数据访问,以访问我的Oracle数据库。当我引入redis层时,它并不是在首次访问时启动缓存,而是应用程序试图从空缓存中获取数据 我的问题是 我的设计是否可行,因为我想保持CRUD操作在JPA存储库中的状态。我只想介绍用于缓存的redis,没有crud操作 我有大量的数据(可能是

我计划使用Redis在我的应用程序中实现一个缓存层。现在,每当用户启动某个计划加载时,应用程序都会从数据库中获取大量数据。该计划在幕后加载,触发少量重量级数据访问,并在最终结果中协调所有调用

目前正在通过JPA存储库进行数据访问,以访问我的Oracle数据库。当我引入redis层时,它并不是在首次访问时启动缓存,而是应用程序试图从空缓存中获取数据

我的问题是

  • 我的设计是否可行,因为我想保持CRUD操作在JPA存储库中的状态。我只想介绍用于缓存的redis,没有crud操作

  • 我有大量的数据(可能是2GB)应该放在缓存层中。max data redis可以容纳多少数据

  • 我的问题是

  • 我的设计是否可行,因为我想保持CRUD操作在JPA存储库中的状态。我只想介绍用于缓存的redis,没有crud操作
  • 这将是工作,但你会有主要的问题缓存失效。 当您执行CRUD操作时,您的redis缓存仍然会有旧数据,并且会存在不一致性。使用redis作为缓存的一般方法是为每个键设置ttl(生存时间)。但你们可以通过引入触发器来解决这种不一致性,若你们做任何CRUD操作,触发器会擦除redis中的密钥

    根据您的工作负载,当您的缓存命中率较低时,您可能会遇到这种情况。 例如,如果您很少访问缓存中的密钥,那么在下次访问之前,所有密钥都将过期。坦率地说,在这种情况下,缓存将无法有效工作。可以通过加热缓存或使用redis(不作为缓存,而是作为具有复制数据的第二存储)来避免这种情况

  • 我有大量的数据(可能是2GB)应该放在缓存层中。max data redis可以容纳多少数据
  • Redis非常高效,并且受物理资源(RAM)的限制,按密钥大小和密钥存储的数据大小,它的容量为512Mb

    您必须考虑到,redis可以在虚拟内存中分割数据,而不是源2Gb的数据(由键表示),因为它可以占用3GB的RAM