memcached

Memcached 和 Redis 比较

比较类别    Redis memcached
数据结构 哈希、列表、集合、有序集合 纯 kev-value
持久化 支持 不支持
高可用 主从复制、读写分离、sentinel、Redis Cluster 需二次开发
单 value 容量 最大 512M 最大 1M
内存分配 临时申请空间,可能导致碎片 预分配内存池的方式管理内存,能够省去内存分配时间
虚拟内存 有自己的 VM 机制,理论上能够存储比物理内存更多的数据,当数据超量时,会引发 swap,把冷数据刷到磁盘上 所有的数据存储在物理内存里
网络模型 非阻塞 IO 复用模型,提供一些非 KV 存储之外的排序、聚合功能,在执行这些功能时,复杂的 CPU 计算,会阻塞整个 IO 调度 非阻塞 IO 复用模型
水平扩展的支持 redis cluster 可以横向扩展 暂无
多线程 Redis6.0 之前是只支持单线程 Memcached 支持多线程,CPU 利用方面 Memcache 优于 Redis
过期策略 有专门线程,清除缓存数据 懒淘汰机制:每次往缓存放入数据的时候,都会存一个时间,在读取的时候要和设置的时间做 TTL 比较来判断是否过期
单机 QPS 约 10W 约 60W
源代码可读性 代码清爽简洁 可能是考虑了太多的扩展性,多系统的兼容性,代码不清爽
适用场景 复杂数据结构、有持久化、高可用需求、value 存储内容较大 纯 KV,数据量非常大,并发量非常大的业务

Memcached 集群

Memcached 集群,称为基于客户端的分布式集群,即由客户端实现集群功能,即 Memcached 本身不支持集群

Memcached 集群内部并不互相通信,一切都需要客户端连接到 Memcached 服务器后自行组织这些节点,并决定数据存储的节点