memcached 应用及与 redis 的对比

在这里插入图片描述
Memcached 是一种免费开源、高性能、分布式内存对象缓存系统,旨在易于使用和简单性,非常适合用作缓存或会话存储,通过减轻数据库负载来加速动态 Web 应用程序。
Memcached 是内存中键值存储,用于存储来自数据库调用、API 调用或页面渲染结果的小块任意数据(字符串、对象)。

接下来是来自官方的一个例子
在这里插入图片描述

Memcached和 redis 都是易使用且性能优异的 nosql 缓存数据库

memcached 和 redis 区别

数据结构

Memcached 是简单的 kv 键值存储,支持任意类型数据,适合简单使用缓存的场景;memcached将数据只是保存成字符串;
redis 支持多种数据类型:字符串、hash、list、set、zset、位图等,灵活应用于各种场景;不同的数据结构存储成不同的数据类型

数据长度

redis 数据键和字符串最大长度为 512MB,但是处于出于性能原因,不建议使用大 kv
memcached 默认最大值 1MB

持久化

memcache 不支持磁盘持久化,是存内存数据,一旦服务出现崩溃、重启,内存中的数据都会丢失,比较适用于允许数据丢失的场景;
redis 支持磁盘持久化,发生崩溃、重启都可以从磁盘重新加载数据,但是 redis 的持久化也不是绝对安全地保证数据的完整性,redis 支持两种RDB 和 aof。rdb通常配置为 n 分钟或者操作数据 n 次就自动保存一份快照,或者手动进行一次快照保存,这样就会存在一定问题,在这 n 分钟或者 n 次时发生问题,数据就造成丢失;aof会记录每个写操作,将写命令追加到 AOF 文件,但是为了性能,更多允许使用异步写入和缓冲机制,。在默认的 everysec 同步策略下,Redis 每秒钟尝试将 AOF 缓冲区的内容同步到磁盘一次,如果此时崩溃,就会造成数据丢失

数据淘汰策略

redis 提供多种淘汰策略,比较常用的 TTL(生存时间),当键到达过期时间时,自动删除该键;LRU 最近最少使用;LFU 不经常使用,redis 跟踪 key 的使用频率,根据使用频率删除不长使用的 key;Random随机等
Memcached 使用 LRU 来管理其缓存。当内存不够时,最近最少使用的数据并将其删除

复制

memcached 原生不支持复制功能;
redis 支持主从复制,提供更高的容错性和高可用性

集群

redis 支持集群功能,可多个节点之间传播数据,以提供容错性和可扩展性;同时支持 redis cluster模式,采取分槽技术,可以将集群进行水平扩展(有机会后续写一下)
memcached 不支持集群,每个服务单独运行,需要客户端自行通过分片技术实现集群和水平扩展

高可用性

redis 支持集群和主从复制功能,一旦 master 出现问题,其他从服务器可以切换成 master 提供服务,恢复的 master 也会转换成从服务器;同时使用 sentinel 工具,监控主从节点的状态,当 master 出现问题,安排合适的 redis 从节点升级为 master

多线程

memcached 采用多线程架构,可以同时处理多个查询,在处理大并发的场景单机性能更显著;
redis 是单线程服务器,单个进程处理查询、写入操作,但是 redis 使用非阻塞 io 和事件驱动 同时管理多个客户端,并且操作的都是内存,单线程同时不存在上下文切换的消耗,性能上还是很 ok 的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值