zoukankan      html  css  js  c++  java
  • memcached 与 redis 的区别?

    1、Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset,hash

    等数据结构的存储。而 memcache 只支持简单数据类型,需要客户端自己处理复

    杂对象

    2、Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可

    以再次加载进行使用(PS:持久化在 rdb、aof)。

    3、由于 Memcache 没有持久化机制,因此宕机所有缓存数据失效。Redis 配置

    为持久化,宕机重启后,将自动加载宕机时刻的数据到缓存系统中。具有更好的

    灾备机制。

    4、Memcache 可以使用 Magent 在客户端进行一致性 hash 做分布式。Redis 支

    持在服务器端做分布式(PS:Twemproxy/Codis/Redis-cluster 多种分布式实现方

    式)

    5、Memcached 的简单限制就是键(key)和 Value 的限制。最大键长为 250 个

    字符。可以接受的储存数据不能超过 1MB(可修改配置文件变大),因为这是典

    型 slab 的最大值,不适合虚拟机使用。而 Redis 的 Key 长度支持到 512k。

    6、Redis 使用的是单线程模型,保证了数据按顺序提交。Memcache 需要使用

    cas 保证数据一致性。CAS(Check and Set)是一个确保并发一致性的机制,属

    于“乐观锁”范畴;原理很简单:拿版本号,操作,对比版本号,如果一致就操

    作,不一致就放弃任何操作

    cpu 利用。由于 Redis 只使用单核,而 Memcached 可以使用多核,所以平均每

    一个核上 Redis 在存储小数据时比 Memcached 性能更 高。而在 100k 以上的数

    据中,Memcached 性能要高于 Redis 。

    7、memcache 内存管理:使用 Slab Allocation。原理相当简单,预先分配一系

    列大小固定的组,然后根据数据大小选择最合适的块存储。避免了内存碎片。(缺

    点:不能变长,浪费了一定空间)memcached 默认情况下下一个 slab 的最大值

    为前一个的 1.25 倍。

    8、redis 内存管理: Redis 通过定义一个数组来记录所有的内存分配情况, Redis

    采用的是包装的 malloc/free,相较于 Memcached 的内存 管理方法来说,要简

    单很多。由于 malloc 首先以链表的方式搜索已管理的内存中可用的空间分配,导

    致内存碎片比较多

  • 相关阅读:
    (转)视频编码标准汇总及比较
    (转)live555从RTSP服务器读取数据到使用接收到的数据流程分析
    (转)MPEG4码流简单分析
    H264裸流分析中,能获取哪些信息?
    (转)基于live555的流媒体代理转发服务器
    测试x264编码器的低延时编码和非延时编码
    ELK 日志分析系统
    Dubbox:来自当当网的SOA服务框架
    CHMOD命令怎么用?
    linux显示文件列表命令ls,使用ls --help列出所有命令参数
  • 原文地址:https://www.cnblogs.com/programb/p/13020042.html
Copyright © 2011-2022 走看看