使用redis缓存java对象:为什么它应该比ConcurrentHashMap更好?

时间:2013-12-04 13:39:05

标签: java caching redis concurrenthashmap

在分析当前正在开发的Java应用程序时,我们已经检测到了一些我们可以使用缓存摆脱的瓶颈。应用程序进程请求并且应该尽可能快地执行。我们正在考虑将Redis作为缓存解决方案,因为我们已经在应用程序中使用它。基本上我们必须缓存java对象。使用Redis,我们必须序列化/反序列化这些对象+网络开销。鉴于基本上Redis是一个键值存储,我想知道使用ConcurrentHashMap而不是Redis是否更有效,因为这将节省我们的序列化和网络开销。但是,在互联网上搜索,我找不到任何人为此目的使用它。我错过了什么吗?为此目的,ConcurrentHashMap的实际限制是什么(就并发请求和缓存数据量而言)?

1 个答案:

答案 0 :(得分:3)

恕我直言,ConcurrentHashMap是一个合适的缓存提供

  • 您不需要外部访问
  • 总堆大小不是太大,例如4 GB
  • 并发级别不超过大约20个CPU(不仅仅是线程)
  • 它具有您需要的功能。
  • 您的到期模型非常简单。

Redis的目的不仅仅是缓存值,还可以在使用不同语言的进程之间共享,甚至可以通过命令行访问。