---Redis---教程---原创
HoldBelief
这个作者很懒,什么都没留下…
展开
-
Redis(5)—— 字符串
2.2 字符串字符串类型是Redis最基础的数据结构。 首先键都是字符串类型, 而且其他几种数据结构都是在字符串类型基础上构建的, 所以字符串类型能为其他四种数据结构的学习奠定基础。 如图2-7所示, 字符串类型的值实际可以是字符串( 简单的字符串、 复杂的字符串( 例如JSON、 XML) ) 、 数字( 整数、 浮点数) , 甚至是二进制( 图片、 音频、 视频) , 但是值最大不能超过512...转载 2018-03-31 18:37:41 · 666 阅读 · 0 评论 -
Redis(9.4)—— 哨兵的客户端连接
通过前面的学习,相信读者对Redis Sentinel有了一定的了解,本节将介绍应用方如何正确地连接Redis Sentinel。有人会说这有什么难的,已经知道了主节点的ip地址和端口,用对应编程语言的客户端连接主节点不就可以了吗?但试想一下,如果这样使用客户端,客户端连接Redis Sentinel和主从复制的Redis又有什么区别呢,如果主节点挂掉了,虽然Redis Sentinel可以完成故...转载 2018-04-02 16:46:21 · 17968 阅读 · 1 评论 -
Redis—— 10集群
Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、 流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的目的。之前,Redis分布式方案一般有两种:·客户端分区方案,优点是分区逻辑可控,缺点是需要自己处理数据路由、高可用、故障转移等问题。·代理方案,优点是简化客户端分布式逻辑和升级维护便利,缺点是加重架...转载 2018-04-02 19:12:23 · 289 阅读 · 0 评论 -
Redis——10集群—— 10.1Redis集群之数据分布理论
10.1.1 数据分布理论分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题, 即把数据集划分到多个节点上, 每个节点负责整体数据的一个子集。如图10-1所示。需要重点关注的是数据分区规则。 常见的分区规则有哈希分区和顺序分区两种, 表10-1对这两种分区规则进行了对比。 ...转载 2018-04-02 20:00:53 · 2579 阅读 · 0 评论 -
Redis——10集群—— 10.2搭建集群
介绍完Redis集群分区规则之后, 下面我们开始搭建Redis集群。 搭建集群工作需要以下三个步骤:1) 准备节点。2) 节点握手。3) 分配槽。10.2.1 准备节点Redis集群一般由多个节点组成,节点数量至少为6个才能保证组成完整高可用的集群。每个节点需要开启配置cluster-enabled yes,让Redis运行在集群模式下。建议为集群内所有节点统一目录,一般划分三个目录:conf、d...转载 2018-04-02 22:22:03 · 491 阅读 · 0 评论 -
Redis——10集群——10.5请求路由(集群客户端)
目前我们已经搭建好Redis集群并且理解了通信和伸缩细节, 但还没有使用客户端去操作集群。 Redis集群对客户端通信协议做了比较大的修改,为了追求性能最大化,并没有采用代理的方式而是采用客户端直连节点的方式。因此对于希望从单机切换到集群环境的应用需要修改客户端代码。本节我们关注集群请求路由的细节,以及客户端如何高效地操作集群。10.5.1 请求重定向在集群模式下,Redis接收任何键相关命令时首...转载 2018-04-03 19:56:51 · 3353 阅读 · 0 评论 -
Redis——2、API的理解和使用——2.5、有序集合
有序集合相对于哈希、列表、集合来说会有一点点陌生,但既然叫有序集合,那么它和集合必然有着联系,它保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据。如图2-24所示,该有序集合包含kris、mike、frank、tim、martin、tom,它们的分数分别是1、 91、 200、 ...转载 2018-04-04 15:57:45 · 634 阅读 · 0 评论 -
Redis(2)—— 全局命令
全局命令Redis有5种数据结构, 它们是键值对中的值, 对于键来说有一些通用的命令。1.查看所有键 keys * 下面插入了3对字符串类型的键值对: 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> set java jedis OK 127.0.0.1:6379> set pytho...原创 2018-03-29 14:41:01 · 414 阅读 · 0 评论 -
Redis(3)—— 数据结构和内部编码
type命令实际返回的就是当前键的数据结构类型, 它们分别是:string( 字符串) 、 hash( 哈希) 、 list( 列表) 、 set( 集合) 、 zset( 有序集合) , 但这些只是Redis对外的数据结构, 如图2-1所示。实际上每种数据结构都有自己底层的内部编码实现, 而且是多种实现,这样Redis会在合适的场景选择合适的内部编码, 如图2-2所示。可以看到每种数据结构都有两...原创 2018-03-29 14:58:44 · 271 阅读 · 0 评论 -
Redis(9.3)—— 哨兵API
Sentinel节点是一个特殊的Redis节点,它有自己专属的API,本节将对其进行介绍。为了方便演示,以图9-21进行说明:Sentinel节点集合监控着两组主从模式的Redis数据节点。1.sentinel masters展示所有被监控的主节点状态以及相关的统计信息, 例如:127.0.0.1:26379> sentinel masters1) 1) "name"2) "mymaster...转载 2018-04-02 16:22:15 · 967 阅读 · 0 评论 -
Redis(9.2)—— 哨兵的安装和部署
上一节介绍了Redis Sentinel的基本架构,本节将介绍如何安装和部署Redis Sentinel。9.2.1 部署拓扑结构下面将以3个Sentinel节点、1个主节点、2个从节点组成一个Redis Sentinel进行说明,拓扑结构如图9-13所示。具体的物理部署如表9-2所示。9.2.2 部署Redis数据节点9.1节提到过,Redis Sentinel中Redis数据节点没有做任何特殊...转载 2018-04-02 16:10:33 · 1215 阅读 · 0 评论 -
Redis(6)—— 哈希
几乎所有的编程语言都提供了哈希( hash) 类型, 它们的叫法可能是哈希、 字典、 关联数组。 在Redis中, 哈希类型是指键值本身又是一个键值对结构, 形如value={{field1, value1}, ...{fieldN, valueN}}, Redis键值对和哈希类型二者的关系可以用图2-14来表示。注意哈希类型中的映射关系叫作field-value, 注意这里的value是指fie...转载 2018-03-31 18:52:23 · 268 阅读 · 0 评论 -
Redis(7)—— 列表
列表( list) 类型是用来存储多个有序的字符串, 如图2-18所示, a、b、 c、 d、 e五个元素从左到右组成了一个有序的列表, 列表中的每个字符串称为元素( element) , 一个列表最多可以存储2的23次方-1个元素。 在Redis中, 可以对列表两端插入( push) 和弹出( pop) , 还可以获取指定范围的元素列表、 获取指定索引下标的元素等( 如图2-18和图2-19所示...转载 2018-03-31 20:58:12 · 261 阅读 · 0 评论 -
Redis——2、API的理解和使用——2.5、集合
集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。如图2-22所示,集合user:1:follow包含着"it"、"music"、"his"、"sports"四个元素,一个集合最多可以存储2的23次方-1个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合...转载 2018-04-03 20:11:49 · 296 阅读 · 0 评论 -
Redis()—— Pipeline
3.3.1 Pipeline概念Redis客户端执行一条命令分为如下四个过程:1) 发送命令2) 命令排队3) 命令执行4) 返回结果其中1) +4) 称为Round Trip Time( RTT, 往返时间) 。Redis提供了批量操作命令( 例如mget、 mset等) , 有效地节约RTT。 但大部分命令是不支持批量操作的, 例如要执行n次hgetall命令, 并没有mhgetall命令存在...转载 2018-03-31 22:38:35 · 1896 阅读 · 0 评论 -
Redis(5.1)—— 持久化RDB
Redis支持RDB和AOF两种持久化机制, 持久化功能有效地避免因进程退出造成的数据丢失问题, 当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB持久化是把当前进程数据生成快照保存到硬盘的过程, 触发RDB持久化过程分为手动触发和自动触发。触发机制手动触发分别对应save和bgsave命令:save命令: 阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间...转载 2018-03-31 23:35:06 · 467 阅读 · 0 评论 -
Redis(5.2)—— 持久化AOF
AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。理解掌握好AOF持久化机制对我们兼顾数据安全性和性能非常有帮助。使用AOF开启AOF功能需要设置配置:appendonly yes,默认不开启。AOF文件名通过appendfilen...转载 2018-04-02 11:55:24 · 501 阅读 · 0 评论 -
Redis(6)—— 复制
在分布式系统中为了解决单点问题, 通常会把数据复制多个副本部署到其他机器, 满足故障恢复和负载均衡等需求。 Redis也是如此, 它为我们提供了复制功能, 实现了相同数据的多个Redis副本。 复制功能是高可用Redis的基础, 后面章节的哨兵和集群都是在复制的基础上实现高可用的。 复制也是Redis日常运维的常见维护点。 因此深刻理解复制的工作原理与使用技巧对我们日常开发运维非常有帮助。 本章内...转载 2018-04-02 09:57:15 · 437 阅读 · 0 评论 -
Redis(9)—— 哨兵
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。可喜的是Redis从2.8开始正式提供了Redis Sentinel(哨兵)架构来解决这个问题,本章会对Redis Sentinel进行详细分析,相信通过本章的学习,读者完全可以在自己的项目中合理地使用和运维Redis Sent...转载 2018-04-02 12:18:34 · 254 阅读 · 0 评论 -
Redis(9.1)—— 哨兵的基本概念
9.1 基本概念由于对Redis的许多概念都有不同的名词解释,所以在介绍Redis Sentinel之前,先对几个名词进行说明,这样便于在后面的介绍中达成一致,如表9-1所示。Redis Sentinel是Redis的高可用实现方案,在实际的生产环境中,对提高整个系统的高可用性是非常有帮助的,本节首先会回顾主从复制模式下故障处理可能产生的问题,而后引出高可用的概念,最后重点分析Redis Sent...转载 2018-04-02 12:20:58 · 433 阅读 · 0 评论 -
Redis(4)—— 单线程架构
Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务, 本节首先通过多个客户端命令调用的例子说明Redis单线程命令处理机制, 接着分析Redis单线程模型为什么性能如此之高, 最终给出为什么理解单线程模型是使用和运维Redis的关键。1.引出单线程模型现在开启了三个redis-cli客户端同时执行命令。客户端1设置一个字符串键值对:127.0.0.1:6379> se...转载 2018-03-29 16:32:11 · 585 阅读 · 0 评论