为什么Redis要比Memcached更火?
前言
为什么现在看Redis要比Memcached更火一些?
线程模型 数据结构 淘汰策略 管道与事务 持久化 高可用 集群化
线程模型
“严格来说,Redis的单线程指的是处理请求的线程,它本身还有其他线程在工作,例如有其他线程用来异步处理耗时的任务。
Redis6.0又进一步完善了多线程,在接收请求和发送请求时使用多线,进一步提高了处理性能。
数据结构
list:可以方便的构建一个链表,或者当作队列使用 hash:灵活地操作我们需要的字段,进行“整存零取”、“零存整取”以及“零存零取” set:构建一个不重复的集合,并方便地进行差集、并集运算 zset:构建一个排行榜,或带有权重的列表 geo:用于地图相关的业务,标识两个地点的坐标,以及计算它们的距离 hyperLogLog:使用非常少的内存计算UV
淘汰策略
volatile-lru:从过期key中按LRU机制淘汰 allkeys-lru:在所有key中按LRU机制淘汰 volatile-random:在过期key中随机淘汰key allkeys-random:在所有key中随机淘汰key volatile-ttl:优先淘汰最近要过期的key volatile-lfu:在所有key中按LFU机制淘汰 allkeys-lfu:在过期key中按LFU机制淘汰
管道与事务
持久化
RDB:将整个实例中的数据快照到磁盘上,全量持久化 AOF:把每一个写命令持久到磁盘,增量持久化
高可用
集群化
总结
从以上几个方面进行对比分析,总结如下表。
# | Memcached | Redis |
---|---|---|
线程模型 | 多线程 | 单线程 |
数据结构 | 仅支持string、value最大1M、过期时间不能超过30天 | string、list、hash、set、zset、geo、hyperLogLog |
淘汰策略 | LRU | LRU、LFU、随机等多种策略 |
管道与事务 | 不支持 | 支持 |
持久化 | 不支持 | 支持 |
高可用 | 不支持 | 主从复制+哨兵 |
集群化 | 客户端一致性哈希算法 | 主从复制+哨兵+固定哈希槽位 |
链接:kaito-kidd.com/2020/06/28/redis-vs-memcached/
作者:Kaito
关注「开源Linux」加星标,提升IT技能
评论