gpt4 book ai didi

java - Java中的自定义缓存实现

转载 作者:行者123 更新时间:2023-11-30 10:42:29 25 4
gpt4 key购买 nike

我想在 Java 中实现某种轻量级缓存,它可以很容易地集成到 Java 中,并且应该很容易与 Java 应用程序一起部署。

缓存层将位于应用程序和数据库层之间:没有数据库缓存,没有 Spring,没有 Hibernate,没有 EHcache,没有 http 缓存。

我们可以使用文件系统或者nano数据库来恢复缓存,以便进程重启后恢复缓存。

我尝试了 LRU 缓存:

http://stackoverflow.com/questions/224868/easy-simple-to-use-lru-cache-in-java

http://www.programcreek.com/2013/03/leetcode-lru-cache-java/

但我不确定在溢出后如何将数据库保存到数据库中(哪个数据库更适合用于更快地插入和查找数据)。或者我应该使用文件系统?

谁有更好的输入来在 Java 中实现缓存机制?

最佳答案

But I am not sure how to after overflow should I save database into database(which database will be better to use for faster insert ans seek ok data) Or I should use File System?

这取决于用例。如果您的缓存值非常大,您可以将每个缓存值存储在一个文件中,并使用缓存键的哈希值作为文件名。

如果您的值较小,将它们存储为单独的文件会产生大量开销,因此最好将缓存的条目存储到一个或多个文件中。要实现这一点,您需要了解“外部索引”和“内存管理”或“可用空间管理”(例如最适合、下一次适合和压缩策略)。这实际上导致了一个微型数据库的实现,所以可以使用一个 :) 我想到了一些东西:LevelDB、MapDB、LMDB、RocksDB

请记住,缓存操作是从应用程序并发进入的,因此缓存可能会逐出一个值,并且可能会同时进入对同一键的请求。您会只实现基本操作,如 Cache.getCache.put 还是 CAS 操作,如 Cache.putIfAbsent?您想高效地使用如今很常见的多核系统吗?

不过,当使用小型数据库时,您将需要为几个月的工程工作做好准备。

Any one has better inputs to implement caching mechanism in Java?

您可以在 cruftex.net 阅读我的博客获取更多输入以在 Java 中实现轻量级和快速缓存。

对于溢出的缓存实现,您可以查看imcache。 .但是 imcache 不是一个成熟的通用缓存,因为例如缺少 CAS 操作,请参阅 Cache interface

我自己的高性能 Java 缓存实现 cache2k ,具有 CAS 操作、事件、加载器和写入器、过期等功能,它最终也会溢出到磁盘。但是,我不确定时间范围......如果您有兴趣在这个领域工作:欢迎贡献!

关于java - Java中的自定义缓存实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com