我正在编写一个应用程序,我需要在DB中存储大量数据并缓存相同的数据。当客户端请求到来时,服务器需要从缓存中获取数据并返回相同的内容。
以下是这样做的: (离线流程) 1.我们有一个弹簧批处理应用程序,它获取json文件(大小约为6MB)。 2.读取每个对象并将其存储在DB中。 3. DB中存储了大约17K条记录。
(在线流程) 4.当请求到达服务器(Web应用程序 - Spring Web MVC)时,应用程序从数据库获取数据并返回响应。
我计划在这里避免数据库存储。我可以在文件服务器中添加文件,并在服务器启动时缓存文件中存在的数据,而不是使用DB吗?
如果有任何现有的方法,请告诉我。
答案 0 :(得分:0)
缓存不会取代持久性。您可以将数据存储在文件系统而不是数据库中,但是首先拥有数据库的重点是数据存储和检索在数据库中比在普通文件系统中快得多,因为更好的数据结构和索引编制(以及易于查询以获取数据的巨大优势)。您总是可以以巨大的文件格式(不推荐)将数据转储到数据库中
对于缓存,您可以使用memcached或redis。请注意,缓存不是100%可靠。您可以配置缓存以指定清除缓存的时间。每当您在数据库中创建/更新某些数据时,您还需要不断更新缓存数据。如果缓存已满,通常会首先从缓存中清除最少使用的资源以容纳新数据。
理想的解决方案是使用可扩展(读取非关系)数据库和缓存层(如memcache)。另外,使用带弹簧的memcache非常容易(我还没有在应用程序中使用redis)。由于您提到了json数据格式,请查看mongodb的持久性。