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 首先以链表的方式搜索已管理的内存中可用的空间分配,导
致内存碎片比较多
最新文章
- jQuery系列:选择器
- 前端开发--评论区抓bug
- MySQL存储过程与存储函数的区别
- Robot Framework 的安装和配置(转载)
- eclipse中安装Open Explorer
- jQuery核心技术-----------------------------------------------------()
- Codeforces Round #231 (Div2) 迟到的解题报告
- UTF-8/UTF-16/UTF-32
- RAC(ReactiveCocoa)使用方法(二)
- APP安全--网络传输安全 AES/RSA/ECC/MD5/SHA
- bzoj usaco 金组水题题解(1)
- Kakfa消息投递语义
- windows 下 Symfony的下载与安装
- Linux系统下rm删除文件后空间没有释放问题解决办法
- jsonModel使用
- Nuget调用简单封装.
- noip第29课资料
- C#实现无物理边距 可打印区域的绘图\打印 z
- supervisor 结合 Dockerfile ENTRYPOINT
- Java MD5Util
热门文章
- CobaltStrike逆向学习系列(7):Controller 任务发布流程分析
- python https 无法访问 SSLError(";Can\'t connect to HTTPS URL because the SSL module is not available
- 【windows 访问控制】开篇、访问控制模型模型
- 【C# IO 操作】使用StringWriter和StringReader的好处
- 一个简单的性能计数器:CodeTimer
- oracle plsql手动修改数据
- oracle中临时表的用法详解
- pyinstaller:各种错误及解决方法
- .net core项目搭建swagger接口实现简单增删改查
- Bert不完全手册2. Bert不能做NLG?MASS/UNILM/BART