### 分布式缓存Redis与Memcached对比 #### Redis的优势 1. **数据类型丰富**:Memcached所有的值均为简单的字符串,而Redis则支持多种数据类型,如字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)以及哈希(Hashes)等。 2. **性能更优**:Redis的速度通常比Memcached更快,这主要得益于其实现了更加高效的内存分配策略,以及采用了多线程等方式提高性能。 3. **数据持久化**:Redis支持两种持久化方式:RDB(快照)和AOF(Append Only File)。这两种方式都能有效地将内存中的数据持久化到磁盘,从而保证数据安全。 #### Redis支持的数据类型 - **String**:基本的键值对类型。 - **List**:有序的字符串集合,适用于队列等场景。 - **Set**:无序的字符串集合,用于存储不重复的数据项。 - **Sorted Set**:带有分数排序的集合,可以存储带有权重的元素。 - **Hashes**:字段-值映射表,类似于Java中的Map,适用于存储对象。 #### Redis集群方案 1. **Twemproxy**:作为代理层,它通过一致性哈希算法将请求路由到不同的Redis实例,简化了集群的管理和使用。但这种方式也存在一些缺点,比如单点压力问题和数据迁移的复杂性。 2. **其他集群方案**:除了Twemproxy之外,还有Redis Cluster原生支持的集群模式,该模式下每个节点都可以是主节点或从节点,支持数据分区和故障转移等功能。 #### Redis的内存管理 - **LRU算法**:Redis使用近似LRU算法来进行内存回收。当Redis内存达到配置的阈值时,它会根据一定的策略删除部分数据来释放内存空间。 - **分区的原因**:通过分区可以有效地利用多台机器的内存资源,提高系统的整体吞吐量和计算能力。同时,分区还可以帮助解决单机内存瓶颈的问题。 ### Redis内存占用情况 - 在实际应用中,不同类型的键值对对内存的消耗有所不同。例如,100万个键值对(键是0到999999,值是字符串"hello world")在32位Mac笔记本上大约占用100MB内存。相比之下,将同样的数据放在一个键中仅需16MB内存,这是由于每个键值对都有较大的内存开销。 ### Memcached服务特点及工作原理 - **完全基于内存**:所有数据都存储在内存中,没有持久化存储设计,这意味着重启服务器后数据会丢失。 - **节点独立**:每个Memcached节点独立运行,它们之间没有直接通信。 - **C/S架构**:采用客户端/服务器模式,用C语言编写,代码简洁。 - **异步I/O**:使用libevent库实现了高效的事件驱动模型。 - **数据过期机制**:可以通过设置TTL(Time To Live)值来指定数据的有效时间,过期数据会被自动清除。 ### 实现集群中的session共享存储 - **粘性Session**:通过负载均衡器将来自同一客户端的所有请求转发到相同的服务器上,确保Session的一致性。 - **服务器Session复制**:每次Session发生变更时,更新消息会被广播到所有集群中的服务器,以保持Session数据的一致性。 - **Session缓存**:使用Redis或Memcached等缓存技术来存储Session数据,实现跨服务器的数据共享。 - **Session持久化**:将Session数据存储在关系型数据库或其他持久化存储系统中,通过查询数据库来读取和更新Session数据。 ### Memcached与Redis的区别 - **数据类型支持**:Redis支持更复杂的数据类型,如列表、集合、有序集合和哈希等。 - **数据持久化**:Redis支持数据的持久化功能,可以在重启后恢复数据。 - **应用场景**:由于其高级特性,Redis更适合用于更复杂的场景,如消息队列、实时数据分析等;而Memcached则更适合用于简单的高速缓存场景。 Redis和Memcached各有优势,在选择时需要根据具体的应用场景和需求来决定。



































剩余28页未读,继续阅读

- yoffey2018-11-25没有写的这么多,不推荐

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 软件技术基础习题答案.doc
- 计算机网络课设——中型企业网络组建实施方案与实施方案.doc
- 计算机软件工程维护策略.docx
- 中职计算机教学创新性对策初探.docx
- C语言程序设计方案实验报告实验七结构体和联合体程序设计方案.doc
- 基于三菱PLC的交通灯控制系统设计.docx
- 第二章施工总进度与网络计划.doc
- 计算机应用基础线上线下混合式教学改革.docx
- 国内外服装品牌电子商务模式对比分析.doc
- PPT模板:计算机原理15-字节与十六进制.pptx
- 关于电力工程项目管理模式创新与应用的探究.docx
- 电子商务专业信息技术课程群规划设置研究.docx
- 信息系统项目管理案例分析项目成本管理.doc
- 自动驾驶出租车的发展状况与展望.docx
- 电气自动化控制技术在煤矿生产中的应用分析1.docx
- 售后服务软件行业深度调查及发展前景研究报告记录.doc


