缓存框架Guava Cache、Caffeine、Ehcache性能对比

常用应用缓存技术性能对比

指标ConcurrentHashMapEhcacheGuava CacheCaffeine
读写很好,分段锁方式好,需要做淘汰处理很好
淘汰算法没有支持多种:LRU、LFU、FIFO一般,LRU很好,W-TinyLFU
功能简单很丰富很丰富,支持刷新和虚引用和Guava Cache类似
持久化不支持支持不支持不支持
集群不支持支持不支持不支持

常用分布式缓存性能对比

指标MemcachedRedisTair
数据结构仅支持简单key-valueString、Hash、List、Set、Sorted SetString、HashMap、List、Set
持久化不支持支持支持
容量纯内存不适合过多数据全内存,需要考虑资源成本可以配置全内存、内存+磁盘
读写很高很高(≈RT0.5ms)String类型比较高(≈RT1ms),复杂类型比较慢(≈RT5ms)
策略过期后不删除缓存6种策略处理过期数据支持

Redis 6种处理过期数据的策略

  • 惰性删除:当客户端请求某个key时,Redis会检查key是否过期,如果过期则删除。
  • 定时删除:Redis每隔一段时间对数据库进行扫描,删除过期的key。
  • 惰性+定时删除:结合前两种方式。
  • 内存淘汰:当内存不足以容纳新的数据时,Redis会根据一定的淘汰策略来删除一些key。
  • 立即删除:在设置key的过期时间时直接删除。
  • 事件触发:当发生过期事件时,删除对应的key。

Tair处理过期数据的策略

  • 定时淘汰(Timed Eviction):Tair可以根据设定的时间参数,在指定的时间点对缓存中的数据进行淘汰。这种策略适用于需要按照时间计划清除过期的数据的场景。
  • 容量淘汰(Capacity Eviction):当缓存达到设定的容量上限时,Tair可以根据配置的淘汰规则(如最近最少使用(LRU)、最近最不经常使用(LFU)等)来淘汰数据。这种策略有助于控制缓存的大小,避免内存资源的浪费。
  • 数据过期(Data Expiration):Tair可以为存储在缓存中的每个数据设置一个过期时间(TTL)。当数据过期时,Tair会自动将其从缓存中删除。这种策略适用于需要保证数据新鲜度的场景。
  • 手动删除(Manual Eviction):管理员可以手动删除缓存中的特定数据。这种策略提供了最大的灵活性,但需要管理员干预。
  • 后台清洗(Background Cleanup):Tair可以在后台定期执行数据清洗任务,清理过期或无效的数据。这种策略可以在不影响缓存性能的情况下,保持缓存的数据质量。
  • 读写策略(Read/Write Strategy):Tair可以根据数据的读写频率和命中率来调整淘汰策略,优先淘汰访问频率低的数据,以提高缓存的命中率。
  • 实时更新(Real-time Update):Tair支持实时更新缓存数据,当数据在源系统中更新时,缓存中的数据可以立即刷新,以确保缓存数据的准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙漠绿州

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值