Skip to content

[开源推荐] Umem-cache: 键值对缓存 #3800

Description

@imchuncai

项目地址

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

类别

C

项目标题

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

项目描述

特性

强一致

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

反缓存击穿

反缓存击穿是内置的。

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

内存碎片化

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

严格控制内存使用

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

多线程

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

无锁

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

TLS

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

集群

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

任意的键和值

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

亮点

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

示例代码

截图或演示视频

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions