搜索
首页
我要提问
随便写写
我要写书
《Redis开发与运维教程》
价格:免费
状态:全书已完结
在读人数:44
热度:1459
开始阅读
加入书架
创建者
遥歌
2 粉丝 46博客
关注
打赏
内容简介
本书全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验对入门与进阶DevOps的开发者提供有价值的帮助。主要内容包括:Redis的安装配置、API、各种高效功能、客户端、持久化、复制、高可用、内存、哨兵、集群、缓存设计等,Redis高可用集群解决方案,Redis设计和使用中的问题,最后提供了一个开源工具:Redis监控运维云平台CacheCloud。
章节目录
第一章 Redis开发前的准备工作
1.1 什么是Redis
Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库,由意大利人 Salvatore Sanfilippo 使用 C 语言编写。Redis 遵守 BSD 协议,实现了免费开源,其最新版本是 6.2
1.2 如何在Windows下安装Redis
为便于大多数读者学习本套教程,教程中采用 Windows 系统对 Redis 数据库进行讲解。虽然 Redis 官方网站没有提供 Windows 版的安装包,但可以通过 GitHub 来下载 Windows 版 Redis 安装包,下载地址:点击前往。 注意:Windows 安装包是某位民间“大神”根据 Redis 源码改
1.3 如何在Linux上安装Redis
相比于 Windows 系统而言,Redis 更适合于在 Linux 系统上使用,这是由 Redis 的底层机制决定的。本节介绍如何在 Linux 发行版 Ubuntu 系统上安装 Redis 数据库。了解Redis版本 Redis 版本
1.4 Redis配置文件
在 Redis 的安装目录中有一个名为 redis.windows.conf 的配置文件,若在 Linux 中则为 redis.conf,本节以 Windows 系统为例对该文件进行讲解。 查看配置项 您可以使用 R
第二章 Redis基础
2.1 Redis中的数据类型
经过前面介绍,我们知道 Redis 是 Key-Value 类型缓存型数据库,Redis 为了存储不同类型的数据,提供了五种常用数据类型,如下所示: string(字符串) hash(哈希散列) list(列表) set(集合) zset(sorted set:有序集合)
2.2 Redis命令行模式
在《Redis数据类型》一节,我们使用了大量的 Redis 命令。从本节开始我们将对各种数据类型的常用命令做详细讲解。Redis 命令用于在 Redis 服务器上执行一些操作,而命令运行的方式是通过客户端命令行来执行的,这种方式也被称为“命令行模
2.4 Redis中的key键
Redis 是一种键值(key-value)型的缓存型数据库,它将数据全部以键值对的形式存储在内存中,并且 key 与 value 一一对应。这里的 key 被形象的称之为密钥,Redis 提供了诸多操作这把“密钥”的命令,从而实现了对存储数据的管理。您可以把 key 看成 value 的变量,通过检索 key 就可以找到对应的 value 值。为了更加全面的了解 key,我们将从以下三个维度做
2.5 Redis中的bitmap位图操作
在平时开发过程中,经常会有一些 bool 类型数据需要存取。比如记录用户一年内签到的次数,签了是 1,没签是 0。如果使用 key-value 来存储,那么每个用户都要记录 365 次,当用户成百上亿时,需要的存储空间将非常巨大。为了解决这个问题,Redis 提供了位图结构。位图(bitmap)同样属于 string 数据类型。
2.6 Redis INCR数值操作命令
Redis string 类型提供了一些专门操作数值的命令,比如 INCRBY(自增)、DECRBR(自减)、INCR(加1) 和 DECR(减1) 等命令。数值操作,同样有特定的应用场景,比如常见的点赞、取消点赞、关注、取消关注等,这类和计数相关的场景都可以使用数值操作来实现。注意:此时 key 对应的 value 值是必须是一个整数,或浮点
2.7 Redis中的list列表
Redis list(列表)相当于 Java 语言中的 LinkedList 结构,是一个链表而非数组,其插入、删除元素的时间复杂度为 O(1),但是查询速度欠佳,时间复杂度为 O(n)。当向列表中添加元素值时,首先需要给这个列表指定一个 key 键,然后使用相应的命令,从列表的左侧(头部)或者右侧(尾部)来添加元素,这些元素会以添加时的顺序排列。一个列表最多可以包含 2^
2.8 Redis中的hash哈希散列
Redis hash(哈希散列)是由字符类型的 field(字段)和 value 组成的哈希映射表结构(也称散列表),它非常类似于表格结构。在 hash 类型中,field 与 value 一一对应,且不允许重
2.9 Redis中的set集合
Redis set (集合)遵循无序排列的规则,集合中的每一个成员(也就是元素,叫法不同而已)都是字符串类型,并且不可重复。Redis set 是通过哈希映射表实现的,所以它的添加、删除、查找操作的时间复杂度为 O(1)。集合中最多可容纳 2^32 - 1 个成员(40 多亿个)。Redis set 使用以下方式向集合中添加一个成员,语法格式如下: 127.0.0.1:6379>
2.10 Redis中的zset有序集合
顾名思义,Redis zset(有序集合)中的成员是有序排列的,它和 set 集合的相同之处在于,集合中的每一个成员都是字符串类型,并且不允许重复;而它们最大区别是,有序集合是有序的,set 是无序的,这是因为有序集合中每个成员都会关联一个 double(双精度浮点数)类型的 score (分数值),Redis 正是通过 score 实现了对集合成员的排序
2.3 Redis中的string字符串
string(字符串)是 Redis 中最简单的数据类型。我们知道,Redis 所有数据类型都是以 key 作为键,通过检索这个 key 就可以获取相应的 value 值。Redis 存在多种数据类型,比如字符串、列表、哈希散列等,它们对应的 value 结构各不相同。本节先讲解字符串的相关知识。认识Redis字符串 Redis 使用标
2.11 Redis连接命令详解
Redis 连接命令是主要用于验证 Redis 服务器的连接状态,比如验证客户端与 Redis 服务器是否连接成功,以及检查服务器运行状态,以及是否断开当前连接等。我们知道,只有当客户端与服务器正常连接后才能够实现彼此的交互、通信。Redis 通过“Redis序列化协议”(简称“RESP”),实现客户端与服务端之间的连接通信,该协议主要包括两个部分:网络模型和序列化
第三章 Redis运维管理
3.1 Redis安全策略
Redis 提供了诸多安全策略,比如为了保证数据安全,提供了设置密码的功能。Redis 密码设置主要有两种方式:一种是使用CINFIG命令来设置密码;另外一种则是手动修改 Redis 的配置文件。虽然看似前者更为简单,其实两种方式各有特点。本节将对它们进行介绍。 命令配置密码 通过执行以下命令查看是否设置了密码验证: 127.0.0.1:6379> CONFIG ge
3.2 Redis客户端(client)命令
Redis 提供了一些操作客户端(client)的命令,比如查询所有已连接到服务器的客户端数量,控制客户端的连接状态(关闭或者挂起)等。通过客户命令我们可以轻松的实现对客户端的管理、控制。Redis 服务器通过监听 TCP 端口的方式来接受客户端的连接。当一个连接建立后,Redis 会自动执行以下过程: 首先客户端 socket 被
3.3 Redis服务器命令
Redis 服务器是对客户端提供服务的主体,只要是安装了 Redis 数据库的计算机都可以通过本地,或者远程的方式对外提供服务。Redis 服务器能够以高可用集群的方式对外提供服务。所谓高可用集群,指的是多台 Redis 服务器组成的
3.4 Redis HyperLoglog基数统计
Redis 经常使用的数据类型有字符串、列表、散列、集合和有序集合,但这些类型并不能满足所有的应用场景,因此,Redis 的后续版本不断的扩增其他数据类型来增强 Redis 适用能力。在 Redis 2.8.9 版本中新增了 HyperLogLog 类型。什么是HyperLoglog HyperLoglog
3.5 Redis PubSub发布订阅
Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。在 Redis 中,
3.6 Redis Stream消息队列
Redis Stream 是 Redis 5.0 版本引入的一种新数据类型,同时它也是 Redis 中最为复杂的数据结构,本节主要对 Stream 做相关介绍。什么是Stream? Stream 实际上是一个具有消息发布/订阅功能的组件,也就常说的消息队列。其实这种类似于 broker/consumer(生产者/消费者)的数据结构很常见,比如 RabbitMQ 消息中间件、C
3.7 Redis布隆过滤器
布隆过滤器(Bloom Filter)是 Redis 4.0 版本提供的新功能,它被作为插件加载到 Redis 服务器中,给 Redis 提供强大的去重功能。相比于 Set 集合的去重功能而言,布隆过滤器在空间上能节省 90% 以上,但是它的不足之处是去重率大约在 99% 左右,也就是说有 1% 左右的误判率,这种误差是由
3.8 Redis GEO地理位置
在 Redis 3.2 版本中,新增了存储地理位置信息的功能,即 GEO(英文全称 geographic),它的底层通过 Redis 有序集合(zset)实现。不过 Redis GEO 并没有与 zset 共用一套的命令,而是拥有自己的一套命令。Redis GEO 提供了 6 个常用命令: GEOADD GEO
3.9 Redis中的事务
Redis 事务的目的是方便用户一次执行多个命令。执行 Redis 事务可分为三个阶段: 1.开始事务 2.命令入队3.执行事务Redis事务特性 Redis 事务具有两个重要特性: 1) 单独的隔离操作 事务中的所有命令都会被
3.10 Redis Lua脚本
从 Redis 2.6 版本开始,Redis 使用内置的 Lua 解释器执行脚本,这意味着我们可以直接在 Redis 客户端执行Lua 脚本 ,于此同时 Redis 还非常贴心地提供了用于编写 Lua 脚本的EVAL命令。第一个L
3.11 Redis Benchmark性能测试
为了解 Redis 在不同配置环境下的性能表现,Redis 提供了一种行性能测试工具 redis-benchmark(也称压力测试工具),它通过同时执行多组命令实现对 Redis 的性能测试。性能测试的作用是让我们了解 Redis 服务器的性能优劣。在实际的业务场
第四章 Redis高级应用
4.1 Redis分区技术详解
Redis 分区技术(又称 Redis Partition)指的是将 Redis 中的数据进行拆分,然后把拆分后的数据分散到多个不同的 Redis 实例(即服务器)中,每个实例仅存储数据集的某一部分(一个子集),我们把这个过程称之为 Redis 分区操作。 备注:Redis 实例指的是
4.2 Redis Pipeline管道技术
我们知道, Redis 服务器是以单线程的方式来处理客户端的网络 IO 请求的。如果每执行一次请求都要创建和断开一次连接,就会消耗过多的时间,导致执行效率降低。因此 Redis 提供了 Pipeline(管道技术),使用该技术可以一次性向服务器发送多条命令,并返回多个执行结果。这样就节省了发送命令和创建连接的时间,从而提高了执行效率。 注意:你需
4.3 Redis数据备份和还原
Redis SAVE 命令用于创建当前数据库的备份文件,文件名默认为dump.rdb。备份数据库数据可以增强对数据的保护,提升数据的安全性。当数据不小心丢失或者被删除时,我们就可以通过相应的操作进行数据恢复。本节介绍 Redis 的数据备份和数据还原操作。 备份数据 SAVE 命令基本语法如下: redis 127.0.0.1:6379> SAVE 执行备份命
4.4 Redis RDB持久化详解
Redis 是一款基于内存的非关系型数据库,它会将数据全部存储在内存中。但是如果 Redis 服务器出现某些意外情况,比如宕机或者断电等,那么内存中的数据就会全部丢失。因此必须有一种机制能够保证 Redis 储存的数据不会因故障而丢失,这就是 Redis 的数据持久化机制。数据的持久化存储是 Redis 的重要特性之一,它能够将内存中的数据保存到本地磁盘中,实现对数据的持久存储。这样即使在服
4.5 Redis AOF持久化详解
AOF 被称为追加模式,或日志模式,是 Redis 提供的另一种持久化策略,它能够存储 Redis 服务器已经执行过的的命令,并且只记录对内存有过修改的命令,这种数据记录方法,被叫做“增量复制”,其默认存储文件为appendonly.aof。 开启AOF持久化 AOF 机制默认处于未
4.6 Redis Cluster主从模式详解
在软件的架构中,主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服务器,通常情况下,主
4.7 Redis集群:Sentinel哨兵模式
在 Redis 主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可
4.8 Redis中的分布式锁应用
在分布式系统中,当不同进程或线程一起访问共享资源时,会造成资源争抢,如果不加以控制的话,就会引发程序错乱。此时使用分布式锁能够非常有效的解决这个问题,它采用了一种互斥机制来防止线程或进程间相互干扰,从而保证了数据的一致性。 提示:如果对分布式系统这
4.9 Redis常见的三种缓存问题
在实际的业务场景中,Redis 一般和其他数据库搭配使用,用来减轻后端数据库的压力,比如和关系型数据库 MySQL 配合使用。Redis 会把 MySQL 中经常被查询的数据缓存起来,比如热点数据,这样当用户来访问的时候,就不需要到 MySQL
4.10 Java使用Redis
在开始学习本节内容之前, 首先需要您掌握 Java 编程语言,其次确定您已经安装了 Redis 服务及 Java Redis 驱动,并且能够成功运行 Java 程序。 本节介绍如何在 Java 中使用 Redis。安装Redis驱动 如果想在 Java 环境下操作
4.11 PHP使用Redis
通过 PHP 使用 Redis 之前,同样需要做一些准备工作,首先你应该熟练掌握 PHP 语言,再者是已经安装了 PHP Redis 扩展程序。本节内容是专门为 PHP 程序开发人员准备的。 安装扩展程序 首先下载 P
4.12 Python使用Redis
Python 使用 Redis 相对比较简单,Python 专门提供了操作 Redis 的第三方模块,即 redis 模块,该模块可以直接使用 Python 包管理工具pip来安装。本节内容适合 Python 开发人员阅读。 安装redis模块 下面以 Windows 系统为例,使用
4.13 附录一
Redis配置项汇总本节对 Redis 的常用配置项和基本命令做简单的总结,您可以把本篇文章看做简版的速查手册。不过,需要注意的是由于 Redis 不同版本的差异,配置项会多少存在一些不同,但总体的来说,大同小异。基本配置 port 6379 # 监听端口号,默认为6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
4.14 附录二
(全书完)
读者评论
你还没登录,点击这里
登录
本书评论
点击加载更多评论
你可能对这些书也感兴趣
《.NET和RabbitMQ实战指南》
开始阅读
《Vue代码规范指南》
开始阅读
《MongoDB权威指南》
开始阅读
《Redis开发与运维教程》
开始阅读
《Vue Router官方教程》
开始阅读
《Go语言的数据结构与算法之美》
开始阅读
最近这些人在读这本书
nullfish
0 粉丝 | 0 关注
+加关注
1336037686
0 粉丝 | 0 关注
JAVA程序员
+加关注
果果沐
0 粉丝 | 0 关注
.NET攻城狮
+加关注
北船余音
0 粉丝 | 0 关注
.NET攻城狮
+加关注
清歌终南
0 粉丝 | 1 关注
.NET攻城狮
+加关注
春风初生
0 粉丝 | 0 关注
前端大咖
+加关注
望北海
0 粉丝 | 0 关注
.NET攻城狮
+加关注
吹南风
0 粉丝 | 0 关注
.NET攻城狮
+加关注