浅谈Memcached和Redis的区别
来源:互联网 发布:淘宝授权书模板 编辑:程序博客网 时间:2024/05/16 11:37
简单区别:
1、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储,Memcached基本只支持简单的key-value存储。
2、Redis支持数据的备份,即master-slave模式的数据备份。
3、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,Memcached不支持持久化。
实现原理上的区别
1、在Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。Redis只会缓存所有key的信息,如果Redis发现内存的使用量超过某个阈值,将触发swap的操作,通过某种算法,将部分key对应的value存储到磁盘中,同时删除内存中的value,什么时候使用时,会再次从磁盘中调用到内存。
2、Memcached是多线程,非阻塞IO复用的网络模型,Redis使用单线程的IO复用模型。
3、内存管理方面不同:
Memcached使用预分配的内存池的方式,使用slab和大小不同的chunk来管理内存,Item根据大小选择合适的chunk存储,内存池的方式可以省去申请/释放内存的开销,并且能减小内存碎片产生,但这种方式也会带来一定程度上的空间浪费,并且在内存仍然有很大空间时,新的数据也可能会被剔除。
Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。
总结一下:如果使用缓存时,支持的数据类型比较多,而且又希望数据不能丢失,同时又想实现缓存的高可用,redis是个不错的选择。
- 浅谈redis和memcached的区别
- 浅谈Memcached和Redis的区别
- Redis和Memcached的区别
- memcached和redis的区别
- Redis和Memcached的区别
- Memcached和Redis的区别
- Redis和Memcached的区别
- Redis和Memcached的区别
- Redis和Memcached的区别
- redis和memcached的区别
- Redis和Memcached的区别
- memcached和redis的区别
- Redis和memcached的区别
- Redis和Memcached的区别
- Redis和Memcached的区别
- Redis和Memcached的区别
- Redis和Memcached的区别
- Redis 和 Memcached 的区别
- C++/JAVA运行机制和运行效率
- Android Snackbar花式使用指南
- 移动端调试
- 01背包 完全背包 多重背包模板
- 解决eclipse中Errors running builder JavaScript Validator的问题
- 浅谈Memcached和Redis的区别
- 【模板】最小生成树Kruskal
- 使用xdebug调试出现Waiting for incoming connection with ide key XX
- JNI日志打印
- 常用的图像处理函数库
- 给输入框赋值
- 邻接表实现图结构的函数模板
- 网卡故障:弹出界面eth0: 错误:没有找到合适的设备:没有找到可用于链接System eth0 的
- UVA 10870 Recurrences(矩阵快速幂)