持久性数据库(缓存)java

时间:2016-02-23 20:59:53

标签: java database performance caching nosql

我有数据库仓库,我存储了去年的所有重要数据(大量数据)。我写入该数据库的数据量取决于白天时间。问题是,在高峰期间,由于将数据插入数据库,我的应用程序变得非常慢。我的想法是在将数据插入db仓库之前创建一个持久数据库(或缓存)来保存数据。你能为这个想法提出技术建议吗?我应该使用nosql还是缓存? (app用java编写,db是mysql)

1 个答案:

答案 0 :(得分:0)

您可以使用分布式缓存来解决您的问题。您可以使用分布式缓存的方式是使用 Read through / Write-Behind

Read through / Write-Behind 意味着:
This is where the application treats cache as the main data store and reads data from it and writes data to it. The cache is responsible for reading and writing this data to the database, thereby relieving the application of this responsibility.

这意味着您的应用程序将始终尝试从缓存中读取键X 。如果在缓存中找到键X ,那就太棒了!返回与X关联的值。如果在缓存中找不到密钥,则查询底层数据库,更新缓存并返回数据。这是通读

Write-Behind 方案中,修改后的缓存条目在可配置的延迟后异步写入数据源,无论是在10秒,20分钟,一天甚至一周或更长时间之后。对于Write-Behind缓存,我们可以维护必须在数据源中更新的数据的后写队列。当应用程序更新缓存中的X时,X被添加到后写队列(如果它已经不存在;否则,它被替换),并且在指定的后写延迟之后,我们可以调用CacheStore来更新具有最新X状态的基础数据源。请注意,后写延迟是相对于一系列修改中的第一个 - 换句话说,数据源中的数据将永远不会落后于缓存,而不是写入 - 落后。

有关上述详情,请参阅oracle docs

上述文档中还提到了其他分布式缓存技术。阅读并选择与您的用例最匹配的那些。要回答问题的第二部分,您可以 redis 缓存作为缓存系统选择。