您的位置:首页 > 数据库 > Memcache

redis和memcached的区别

2017-02-20 12:29 423 查看
 原文链接:
http://wenku.baidu.com/link?url=uE-d0bkBsqIw9ZYlgHoZ1TEsIHJrxKUf-304LbrMHh0aNr-T3JFoKyGgDKCdPe2MVwZIFCVFxA8X-eSrqKk9VAHQ2MPScFf5LamzMyUpKiS
 

它们都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。在我们团队的项目中,一开始用的是memcached,后来用redis替代。

memcached是多线程的,这样可以充分利用多核能力。redis是单核,要想在那么多数据结构基础上支持多线程,光加锁就会让人疯掉,性能也会下降。

如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:</p>

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

2 、Redis支持数据的备份,master-slave模式的数据备份。</p>

3 、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

补充:

1 、网络IO模型

2、内存管理方面

3、数据一致性问题

4、存储方式及其它方面

5、关于不同语言的客户端支持

在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别。Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: