我计划在我的应用程序中使用Redis实现一个缓存层。现在,每当用户启动某个计划负载时,应用程序都会从DB获取大量数据。这个计划在场景后面加载,触发很少的重量级数据访问,并在最终结果中编排所有调用。
现在正在通过JPA存储库进行数据访问,以访问我的Oracle DB。当我介绍redis层时,它并不是在第一次访问中启动缓存,而是应用程序试图从空缓存中获取数据。
我的问题是
发布于 2018-08-11 17:48:32
我的问题是
它将工作,但您将有主要的问题缓存无效。当您执行CRUD操作时,您的redis缓存仍然会有旧数据,并且会有不一致的地方。使用redis作为缓存的一般方法是为每个键设置ttl()。但是,如果您执行CRUD操作,可以通过引入触发器来解决这种不一致的问题,在redis中删除键。
取决于您的工作负载,当您的缓存命中率较低时,您可以满足情况。例如,如果很少访问缓存中的密钥,那么所有密钥都将过期,直到下一次访问为止。坦率地说,在这种情况下,缓存无法有效工作。可以通过升温缓存或使用redis作为缓存,而将其作为第二个具有复制数据的存储来避免。
由于物理资源(RAM)和密钥的大小以及密钥存储的数据大小,Redis是非常高效和有限的,其大小为512 it。
您必须考虑到,redis可以在虚拟内存中分割数据,而不是由键和数据表示的2Gb数据,因为它可以占用3GB的RAM。
https://stackoverflow.com/questions/51775874
复制相似问题