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 首先以链表的方式搜索已管理的内存中可用的空间分配,导

致内存碎片比较多

最新文章

  1. jQuery系列:选择器
  2. 前端开发--评论区抓bug
  3. MySQL存储过程与存储函数的区别
  4. Robot Framework 的安装和配置(转载)
  5. eclipse中安装Open Explorer
  6. jQuery核心技术-----------------------------------------------------()
  7. Codeforces Round #231 (Div2) 迟到的解题报告
  8. UTF-8/UTF-16/UTF-32
  9. RAC(ReactiveCocoa)使用方法(二)
  10. APP安全--网络传输安全 AES/RSA/ECC/MD5/SHA
  11. bzoj usaco 金组水题题解(1)
  12. Kakfa消息投递语义
  13. windows 下 Symfony的下载与安装
  14. Linux系统下rm删除文件后空间没有释放问题解决办法
  15. jsonModel使用
  16. Nuget调用简单封装.
  17. noip第29课资料
  18. C#实现无物理边距 可打印区域的绘图\打印 z
  19. supervisor 结合 Dockerfile ENTRYPOINT
  20. Java MD5Util

热门文章

  1. CobaltStrike逆向学习系列(7):Controller 任务发布流程分析
  2. python https 无法访问 SSLError("Can\'t connect to HTTPS URL because the SSL module is not available
  3. 【windows 访问控制】开篇、访问控制模型模型
  4. 【C# IO 操作】使用StringWriter和StringReader的好处
  5. 一个简单的性能计数器:CodeTimer
  6. oracle plsql手动修改数据
  7. oracle中临时表的用法详解
  8. pyinstaller:各种错误及解决方法
  9. .net core项目搭建swagger接口实现简单增删改查
  10. Bert不完全手册2. Bert不能做NLG?MASS/UNILM/BART