分布式缓存Redis使用方法.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布式缓存Redis使用方法

分布式缓存Redis 使用方法 作者:张小博,新炬网络技术专家。 缓存在系统中的作用: 1、少量数据存储,高速读写访问。通过数据全部in-momery 的方式来保证高速访 问,同时提供数据落地的功能,实际这正是Redis 最主要的适用场景。 2、海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。 Redis3.0 以后开始支持集群,实现了半自动化的数据分片,不过需要smart-client 的 支持。 Redis 全角度介绍: 网络模型:Redis 使用单线程的 IO 复用模型,自己封装了一个简单的AeEvent 事 件处理框架,主要实现了epoll、kqueue 和select,对于单纯只有IO 操作来说,单线 程可以将速度优势发挥到最大,但是 Redis 也提供了一些简单的计算功能,比如排序、 聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU 计算过程中,整 个IO 调度都是被阻塞住的。 内存管理:Redis 使用现场申请内存的方式来存储数据,并且很少使用 free-list 等方式来优化内存分配,会在一定程度上存在内存碎片,Redis 跟据存储命令参数,会 把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会 被剔除的,即便物理内存不够,导致 swap 也不会剔除任何非临时数据(但会尝试剔除 部分临时数据),这点上Redis 更适合作为存储而不是cache。 数据一致性问题:在一致性问题上,个人感觉 redis 没有 memcached 实现的好, Memcached 提供了 cas 命令,可以保证多个并发访问操作同一份数据的一致性问题。 Redis 没有提供cas 命令,并不能保证这点,不过Redis 提供了事务的功能,可以保证 一串 命令的原子性,中间不会被任何操作打断。 支持的KEY 类型:Redis 除key/value 之外,还支持list,set,sorted set,hash 等 众多数据结构,提供了 KEYS 进行枚举操作,但不能在线上使用,如果需要枚举线上数 据,Redis 提供了工具可以直接扫描其dump 文件,枚举出所有数据,Redis 还同时提供 1 了持久化和复制等功能。 客户端支持:redis 官方提供了丰富的客户端支持,包括了绝大多数编程语言的客 户端,比如我此次测试就选择了官方推荐了Java 客户端Jedis.里面提供了丰富的接口、 方法使得开发人员无需关系内部的数据分片、读取数据的路由等,只需简单的调用即可, 非常方便。 数据复制:从 2.8 开始,Slave 会周期性(每秒一次)发起一个 Ack 确认复制流 (replication stream)被处理进度, Redis 复制工作原理详细过程如下: 1. 如果设置了一个Slave,无论是第一次连接还是重连到Master,它都会发出一 个SYNC 命令; 2. 当Master 收到SYNC 命令之后,会做两件事: a) Master 执行BGSAVE:后台写数据到磁盘(rdb 快照); b) Master 同时将新收到的写入和修改数据集的命令存入缓冲区(非查询类); 3. 当Master 在后台把数据保存到快照文件完成之后,Master 会把这个快照文件 传送给Slave,而Slave 则把内存清空后,加载该文件到内存中; 4. 而Master 也会把此前收集到缓冲区中的命令,通过Reids 命令协议形式转发给 Slave,Slave 执行这些命令,实现和Master 的同步; 5. Master/Slave 此后会不断通过异步方式进行命令的同步,达到最终数据的同步 一致; 6. 需要注意的是Master 和Slave 之间一旦发生重连都会引发全量同步操作。但在 2.8 之后,也可能是部分同步操作。 2.8 开始,当Master 和 Slave 之间的连接断开之后,他们之间可以采用持续复制 处理方式代替采用全量同步。 Master 端为复制流维护一个内存缓冲区(in-memory backlog),记录最近发送的复 制流命令;同时,Master 和Slave 之间都维护一个复制偏移量(replication offset)和 当前Master 服务器ID (Master run id)。当网络断开,Slave 尝试重连时

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档