很多开发者都认为Redis不可能比Memcached快,Memcached完全基于内存,而Redis具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快。但是测试结果基本是Redis占绝对优势。一直在思考这个原因,目前想到的原因有这几方面。
Libevent。和Memcached不同,Redis并没有选择libevent。Libevent为了迎合通用性造成代码庞大(目前Redis代码还不到libevent的1/3)及牺牲了在特定平台的不少性能。Redis用libevent中两个文件修改实现了自己的epoll event loop(4)。业界不少开发者也建议Redis使用另外一个libevent高性能替代libev,但是作者还是坚持Redis应该小巧并去依赖的思路。一个印象深刻的细节是编译Redis之前并不需要执行./configure。
CAS问题。CAS是Memcached中比较方便的一种防止竞争修改资源的方法。CAS实现需要为每个cache key设置一个隐藏的cas token,cas相当value版本号,每次set会token需要递增,因此带来CPU和内存的双重开销,虽然这些开销很小,但是到单机10G+ cache以及QPS上万之后这些开销就会给双方相对带来一些细微性能差别(5)。
1. redis中,并不是所有的数据都一直存储在内存中的,这是和memcached相比一个最大的区别。
2. redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3. redis支持数据的备份,即master-slave模式的数据备份。
4. redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从
6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)
7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复。
热门文章更多>>
标签更多>>
专题更多>>
最新文章更多>>
- iOS 14/iPadOS 14开发者预览版Beta8升级方法及更新内容
- 质因数分解板子
- 简介iOS开发中应用SQLite的模糊查询和常用函数
- 约瑟夫优化
- iOS/iPadOS 14.2Beta 1怎么升级?iOS/iPadOS 14.2开发者预览版Beta 1升级方法
- iOS13.7还能降级吗 iOS13.6.1已关闭验证
- iOS14提醒事项App有哪些改动 iOS14提醒事项功能介绍
- iOS14如何修改小组件 小组件添加和删除方法
- 苹果 iOS 14 Beta 7怎么样 苹果iOS14开发者预览版Beta7更新内容
- iOS/iPadOS 14 Beta 7值得升级吗?iOS/iPadOS 14 Beta 7更新介绍
Alwayshere32782496