• 请不要在回答技术问题时复制粘贴 AI 生成的内容
imchuncai
V2EX  ›  程序员

[开源项目] Umem-cache:键值对缓存

  •  
  •   imchuncai · 16h 38m ago · 446 views

    项目地址

    https://github.com/imchuncai/umem-cache

    Umem-cache

    Umem-cache 是一个用户空间键值对缓存。它的目标是做到全世界最好。

    在基于 Zipf 分布且键值对大小在 1KB 以内的基准测试中,Umem-cache 的命中率比 Memcached 和 Redis 高 出 10%,命中吞吐量高出 50%。

    特性

    强一致

    缓存数据能够与后端数据库保持完全同步。换言之,你不会取到旧数据。

    反缓存击穿

    反缓存击穿是内置的。

    缓存击穿是指当某个热键首次进入缓存时,每个人都争相将其缓存,从而给后方数据库带来压力。反缓存击 穿通过仅允许一个连接执行缓存工作来避免这种情况。

    内存碎片化

    我们没有内存碎片化问题,我们会通过移动键值对的存储位置来紧凑化内存布局。

    严格控制内存使用

    我们充分尊重用户的配置。我们对内存使用(包括哈希表的内存占用)进行精确控制,增加键值对的数量 不会导致额外的内存消耗,并且哈希表的大小是根据管理的键值对的数量动态调整的。

    多线程

    我们提供多线程配置以充分发挥机器的性能。除了主线程和配置指定的工作线程外,我们不会创建其他线程。

    无锁

    我们的多线程方案是无锁的,不存在随着线程数量上升反而导致性能下降的情况。

    TLS

    我们提供了可选的 TLS 配置,该配置使用 mTLS 双向身份验证。

    集群

    我们提供可选的集群配置,它基于 raft 共识算法实现,提供一致性和可用性保证。

    任意的键和值

    键和值可以是任意字节数组,除了在使用单例时键的长度需要限制在 255 字节以内,使用集群时键的长度需要限制在 247 字节以内。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   965 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:33 · PVG 06:33 · LAX 15:33 · JFK 18:33
    ♥ Do have faith in what you're doing.