作者 |
金华,胡书敏 杨保华 戴王剑 曹亚仑 |
丛书名 |
出版社 |
机械工业出版社 |
ISBN |
9782107261030 |
简要 |
简介 |
内容简介书籍计算机书籍 ---------------------------8082548 - 基于Docker的Redis入门与实战--------------------------- 本书围绕“高并发大数据”的项目需求,全面讲述分布式缓存组件Redis的基本语法、核心技术和实战技能。 本书分为13章,第1~7章主要介绍Redis入门知识、Redis基本数据类型、Redis常用命令、Redis服务器和客户端实践技巧、Redis数据库操作技巧、Redis AOF和RDB持久化操作技巧、Redis集群的搭建方式,第8~11章主要介绍Redis同MySQL和MyCAT集群的整合技巧、Redis同lua的整合技巧等,第12、13章主要介绍Redis、Spring Boot和Spring Cloud如何构建微服务应用。 ---------------------------8052127 - Docker技术入门与实战 第3版--------------------------- 本书从Docker基本原理开始,深入浅出地讲解Docker的构建与操作,内容系统全面,可帮助开发人员、运维人员快速部署Docker应用。本书分为四大部分:基础入门、实战案例、进阶技能、开源项目,第一部分(第1~8章)介绍Docker与虚拟化技术的基本概念,包括安装、镜像、容器、仓库、数据卷、端口映射等;第二部分(第9~16章)通过案例介绍Docker的应用方法,包括与各种操作系统平台、SSH服务的镜像、Web服务器与应用、数据库的应用、各类编程语言的接口、容器云等,还介绍了作者在容器实战中的思考与经验总结;第三部分(第17~21章)介绍一些进阶技能,如Docker核心技术实现原理、安全、高级网络配置、libnetwork插件化网络功能等;第四部分(第22~28章)介绍与容器开发相关的开源项目,包括Etcd、Docker Machine、Docker Compose、Docker Swarm、Mesos、Kubernetes等。第3版根据 Docker 18.x 系列版本对全书内容进行了全面修订。 |
目录 |
[套装书具体书目] 8052127 - Docker技术入门与实战 第3版 - 9787111608523 - 机械工业出版社 - 定价 89 8082548 - 基于Docker的Redis入门与实战 - 9787111684589 - 机械工业出版社 - 定价 79 ---------------------------8082548 - 基于Docker的Redis入门与实战--------------------------- 前言 第1章 构建Redis开发环境 1 1.1 Redis概述 1 1.1.1 对比传统数据库与NoSQL数据库 1 1.1.2 Redis的特点 2 1.1.3 Redis更适合以分布式集群的方式提供服务 2 1.2 了解必要的Docker技能 3 1.2.1 Docker容器、镜像和仓库 3 1.2.2 在Windows上安装Docker 3 1.2.3 Docker镜像相关的命令 4 1.2.4 Docker容器相关的命令 4 1.3 安装和配置基于Docker的Redis环境 5 1.3.1 用docker pull下载最新Redis镜像 5 1.3.2 用docker run启动Redis容器 5 1.3.3 用docker logs观察Redis启动效果 6 1.3.4 通过docker exec进入Redis容器 6 1.3.5 停止、重启和删除Redis容器 7 1.3.6 查看Redis的版本 8 1.3.7 Redis服务器和客户端 8 1.3.8 总结容器和Redis的相关命令 9 1.4 本章小结 10 第2章 实践Redis的基本数据类型 11 2.1 Redis缓存初体验 11 2.1.1 用redis-cli启动客户端并缓存数据 11 2.1.2 设置数据的生存时间 12 2.2 针对字符串的命令 13 2.2.1 读写字符串的set和get命令 13 2.2.2 设置和获取多个字符串的命令 14 2.2.3 对值进行增量和减量操作 15 2.2.4 通过getset命令设置新值 16 2.2.5 针对字符串的其他操作 17 2.3 针对哈希类型变量的命令 17 2.3.1 设置并获取哈希值 18 2.3.2 hsetnx命令 19 2.3.3 针对key的相关操作 19 2.3.4 用hexists命令判断值是否存在 20 2.3.5 对哈希类型数据的删除操作 21 2.4 针对列表类型变量的命令 21 2.4.1 读写列表的命令 21 2.4.2 lpushx和rpushx命令 23 2.4.3 用list模拟堆栈和队列 24 2.4.4 用lrange命令获取指定区间内的数据 25 2.4.5 用lset命令修改列表数据 26 2.4.6 删除列表数据的命令 26 2.5 针对集合的命令 28 2.5.1 读写集合的命令 28 2.5.2 列表和集合类数据的使用场景 29 2.5.3 用sismember命令判断元素是否存在 29 2.5.4 获取集合的交集、并集和差集 29 2.5.5 用srem命令删除集合数据 30 2.6 针对有序集合的命令 31 2.6.1 读写有序集合的命令 31 2.6.2 通过zincrby命令修改元素的分值 33 2.6.3 用zscore命令获取指定元素的分数 33 2.6.4 查看有序集合里的元素排名 34 2.6.5 删除有序集合里的值 35 2.7 本章小结 36 第3章 实践Redis的常用命令 37 3.1 键操作命令 37 3.1.1 用exists命令判断键是否存在 37 3.1.2 用keys命令查找键 38 3.1.3 用scan命令查找键 38 3.1.4 重命名键 39 3.1.5 用del命令删除键 40 3.1.6 关于键生存时间的命令 41 3.2 HyperLogLog相关命令 42 3.2.1 用pfadd添加键值对 42 3.2.2 用pfcount统计基数值 43 3.2.3 用pfmerge进行合并操作 43 3.2.4 统计网站访问总人数 44 3.3 lua脚本相关命令 44 3.3.1 把lua脚本装载到缓存里 45 3.3.2 通过evalsha命令执行缓存中的脚本 45 3.3.3 清空缓存中lua脚本的命令 45 3.3.4 用eval命令执行lua脚本 46 3.4 排序相关命令 46 3.4.1 用sort命令进行排序 46 3.4.2 用by参数指定排序模式 48 3.4.3 用limit参数返回部分排序结果 48 3.4.4 sort命令里get参数的用法 49 3.4.5 通过store参数提升性能 50 3.5 本章小结 51 第4章 实践Redis服务器和客户端的操作 52 4.1 Redis服务器管理客户端的命令 52 4.1.1 获取和设置客户端的名字 52 4.1.2 通过client list命令查看客户端的信息 53 4.1.3 通过client pause命令暂停客户端的命令 53 4.1.4 通过client kill命令中断客户端连接 54 4.1.5 通过shutdown命令关闭服务器和客户端 54 4.2 查看Redis服务器的详细信息 55 4.2.1 通过info命令查看服务器信息 55 4.2.2 查看客户端连接状况 56 4.2.3 观察最大连接数 56 4.2.4 查看每秒执行多少条指令 56 4.2.5 观察内存用量 57 4.2.6 通过command命令查看Redis命令 57 4.2.7 查看指定Redis命令的信息 58 4.2.8 获取指定命令的所有键 58 4.3 查看并修改服务器的常用配置 59 4.3.1 查看服务器的配置 59 4.3.2 通过修改服务器配置设置密码 60 4.3.3 用config rewrite命令改写Redis配置文件 61 4.3.4 启动Redis服务器时加载配置文件 61 4.4 多个客户端连接远端服务器 63 4.4.1 多个Redis客户端连接远端服务器 63 4.4.2 通过docker inspect命令观察IP地址 64 4.4.3 实践客户端命令 65 4.4.4 通过info观察服务器状态 65 4.5 本章小结 66 第5章 Redis数据库操作实战 67 5.1 切换数据库操作 67 5.1.1 查看和设置默认的数据库个数 67 5.1.2 用select命令切换数据库 69 5.2 Redis事务操作 70 5.2.1 事务的概念与ACID特性 70 5.2.2 实现Redis事务的相关命令 70 5.2.3 通过discard命令撤销事务中的操作 71 5.2.4 Redis持久化与事务持久性 72 5.2.5 用watch命令监视指定键 73 5.3 地理位置相关操作 75 5.3.1 用geoadd命令存储地理位置 75 5.3.2 获取地理位置的经纬度信息 76 5.3.3 查询指定范围内的地理信息 76 5.3.4 查询地理位置间的距离 77 5.4 位图数据类型的应用 78 5.4.1 setbit和getbit操作 78 5.4.2 用bitop对位图进行运算 79 5.4.3 bitcount操作 80 5.5 慢查询实战分析 81 5.5.1 慢查询相关的配置参数 81 5.5.2 用slowlog get命令观察慢查询 81 5.5.3 慢查询相关命令 82 5.6 本章小结 83 第6章 Redis数据持久化操作 84 6.1 Redis持久化机制概述 84 6.1.1 基于AOF的持久化机制 84 6.1.2 基于RDB的持久化机制 85 6.2 AOF持久化机制实战 85 6.2.1 AOF配置文件的说明 85 6.2.2 实践AOF持久化 86 6.2.3 观察重写AOF文件的效果 88 6.2.4 模拟数据恢复的流程 89 6.2.5 修复AOF文件 91 6.3 RDB持久化机制实战 91 6.3.1 编写配置文件,生成RDB快照 92 6.3.2 用快照文件恢复数据 93 6.3.3 save和bgsave命令 94 6.4 如何选用持久化方式 94 6.4.1 对比两种持久化方式 95 6.4.2 综合使用两种持久化方式 95 6.4.3 查看持久化状态的命令 96 6.5 本章小结 97 第7章 搭建Redis集群 98 7.1 搭建基于主从复制模式的集群 98 7.1.1 主从复制模式概述 98 7.1.2 用命令搭建主从集群 99 7.1.3 通过配置搭建主从集群 101 7.1.4 配置读写分离效果 103 7.1.5 用心跳机制提高主从复制的可靠性 103 7.1.6 用偏移量检查数据是否一致 104 7.2 搭建哨兵模式的集群 105 7.2.1 哨兵模式概述 105 7.2.2 搭建哨兵模式集群 106 7.2.3 哨兵节点的常用配置 108 7.2.4 哨兵模式下的故障自动恢复效果 109 7.2.5 通过日志观察故障恢复流程 110 7.2.6 故障节点恢复后的表现 112 7.3 搭建cluster集群 113 7.3.1 哈希槽与cluster集群 113 7.3.2 初步搭建cluster集群 114 7.3.3 在cluster集群中读写数据 120 7.3.4 模拟扩容和数据迁移动作 121 7.3.5 cluster集群的常用配置参数 123 7.4 本章小结 124 第8章 Java整合MySQL与Redis 125 8.1 Java通过Jedis读写Redis 125 8.1.1 以Maven方式引入Jedis包 125 8.1.2 通过Jedis读写Redis字符串 126 8.1.3 操作各种Redis命令 128 8.1.4 以事务的方式操作Redis 129 8.1.5 Jedis连接池 130 8.1.6 用管道的方式提升操作性能 131 8.2 Java与各种Redis数据类型 132 8.2.1 读写列表类对象 132 8.2.2 读写哈希表对象 134 8.2.3 读写集合对象 135 8.2.4 读写有序集合对象 135 8.2.5 操作地理位置数据 136 8.3 Redis与MySQL的整合 137 8.3.1 通过Docker安装MySQL开发环境 138 8.3.2 通过JDBC连接并操作MySQL数据库 139 8.3.3 引入Redis做缓存 142 8.3.4 模拟缓存穿透现象 146 8.3.5 模拟内存使用不当的场景 147 8.4 Redis缓存实战分析 148 8.4.1 缓存不存在的键,以防穿透 148 8.4.2 合理设置超时时间,以防内存溢出 150 8.4.3 超时时间外加随机数,以防穿透 152 8.5 本章小结 153 第9章 Redis应用场景与案例实现 154 9.1 Redis消息队列实战 154 9.1.1 消息队列与Redis消息订阅发布模式 154 9.1.2 消息订阅发布的命令和流程 155 9.1.3 消息订阅发布的相关命令汇总 159 9.1.4 Java与消息队列的实战范例 159 9.2 用Java实战Redis分布式锁 162 9.2.1 观察分布式锁的特性 162 9.2.2 加锁与解锁的Redis命令分析 163 9.2.3 基于Java语言的Redis分布式锁 163 9.3 用Java实现Redis限流 167 9.3.1 zset有序集合相关命令与限流 167 9.3.2 zset有序集合与限流 167 9.4 Redis压力测试实战 169 9.5 本章小结 171 第10章 Redis整合MySQL集群与MyCAT分库分表组件 172 10.1 Redis整合MySQL主从集群 172 10.1.1 用Docker搭建MySQL主从集群 172 10.1.2 准备数据 176 10.1.3 创建Java项目,准备pom文件 177 10.1.4 用Java代码读写MySQL集群和Redis 178 10.1.5 MySQL主从集群整合Redis主从集群 181 10.2 Redis整合MySQL和MyCAT分库组件 185 10.2.1 分库分表概述 185 10.2.2 用MyCAT组件实现分库分表 187 10.2.3 Java、MySQL与MyCAT的整合范例 190 10.2.4 Redis集群与MySQL和MyCAT整合范例 195 10.3 本章小结 199 第11章 Redis整合lua脚本实战 200 11.1 在Redis里调用lua脚本 200 11.1.1 结合Redis叙述lua的特性 200 11.1.2 通过redis-cli命令运行lua脚本 201 11.1.3 直接通过eval命令执行脚本 202 11.1.4 通过return返回脚本运行结果 203 11.1.5 整理Redis里和lua相关的命令 203 11.1.6 观察lua脚本阻塞Redis的效果 204 11.2 Redis整合lua高级实战 205 11.2.1 通过KEYS和ARGV传递参数 205 11.2.2 在脚本里引入分支语句 206 11.2.3 while循环调用 207 11.2.4 for循环调用 208 11.2.5 在Java程序里调用Redis的lua脚本 209 11.2.6 lua脚本有错,不会执行 210 11.3 Redis整合lua脚本的实例分析 211 11.3.1 以计数模式实现限流效果 211 11.3.2 用lua脚本防止超卖 214 11.4 本章小结 217 第12章 Redis与Spring Boot的整合应用 218 12.1 在Spring Boot框架里引入Redis 218 12.1.1 SSM和Spring Boot框架介绍 218 12.1.2 准备MySQL数据库和数据表 220 12.1.3 搭建Spring Boot框架 221 12.1.4 在框架里引入Redis等组件 222 12.1.5 启动Spring Boot,观察缓存效果 228 12.2 Spring Boot框架整合Redis哨兵集群 229 12.2.1 搭建Redis哨兵集群 229 12.2.2 在Spring Boot框架里引入Redis哨兵集群 230 12.2.3 观察整合效果 231 12.3 Spring Boot框架整合Redis cluster集群 232 12.3.1 搭建Redis cluster集群 232 12.3.2 在Spring Boot里使用Redis cluster集群 232 12.4 在Spring Boot里实现秒杀案例 233 12.4.1 构建Spring Boot项目 233 12.4.2 编写启动类 235 12.4.3 在Controller层里定义秒杀接口 235 12.4.4 在Service层里通过lua脚本实现秒杀效果 236 12.4.5 配置Redis连接参数 238 12.4.6 演示秒杀效果 239 12.5 本章小结 242 第13章 Redis整合Spring Cloud微服务 243 13.1 微服务和Spring Cloud相关概念 243 13.1.1 传统架构与微服务的比较 243 13.1.2 Spring Cloud全家桶组件与微服务的关系 245 13.2 多模块整合Redis,构建微服务体系 246 13.2.1 用Docker准备Redis和MySQL集群环境 246 13.2.2 含Redis和Eureka的微服务架构图 247 13.2.3 开发Eureka服务器 248 13.2.4 开发含Redis的风控模块(Eureka客户端) 251 13.2.5 开发含Redis的下单模块(Eureka客户端) 259 13.3 Redis与Ribbon整合使用 264 13.3.1 Ribbon负载均衡组件与Redis的整合效果 265 13.3.2 引入多个风控组件分摊流量 265 13.3.3 从缓存和负载均衡维度观察整合后的效果 267 13.4 本章小结 268 ---------------------------8052127 - Docker技术入门与实战 第3版--------------------------- 第3版前言 第一部分 基础入门 第1章 初识Docker与容器 3 1.1 什么是Docker 3 1.2 为什么要使用Docker 6 1.3 Docker与虚拟化 8 1.4 本章小结 9 第2章 核心概念与安装配置 10 2.1 核心概念 10 2.2 安装Docker引擎 11 2.2.1 Ubuntu 环境下安装 Docker 12 2.2.2 CentOS 环境下安装 Docker 14 2.2.3 通过脚本安装 15 2.2.4 macOS环境下安装 Docker 15 2.2.5 Windows环境下安装Docker 23 2.3 配置 Docker 服务 26 2.4 推荐实践环境 27 2.5 本章小结 27 第3章 使用Docker镜像 28 3.1 获取镜像 28 3.2 查看镜像信息 30 3.3 搜寻镜像 32 3.4 删除和清理镜像 33 3.5 创建镜像 35 3.6 存出和载入镜像 36 3.7 上传镜像 37 3.8 本章小结 38 第4章 操作Docker容器 39 4.1 创建容器 39 4.2 停止容器 44 4.3 进入容器 46 4.4 删除容器 47 4.5 导入和导出容器 48 4.6 查看容器 49 4.7 其他容器命令 50 4.8 本章小结 52 第5章 访问 Docker 仓库 53 5.1 Docker Hub 公共镜像市场 53 5.2 第三方镜像市场 55 5.3 搭建本地私有仓库 56 5.4 本章小结 58 第6章 Docker数据管理 59 6.1 数据卷 59 6.2 数据卷容器 60 6.3 利用数据卷容器来迁移数据 62 6.4 本章小结 62 第7章 端口映射与容器互联 63 7.1 端口映射实现容器访问 63 7.2 互联机制实现便捷互访 64 7.3 本章小结 67 第8章 使用Dockerfile创建镜像 68 8.1 基本结构 68 8.2 指令说明 70 8.2.1 配置指令 71 8.2.2 操作指令 74 8.3 创建镜像 75 8.3.1 命令选项 76 8.3.2 选择父镜像 77 8.3.3 使用.dockerignore文件 77 8.3.4 多步骤创建 78 8.4 最佳实践 79 8.5 本章小结 80 第二部分 实战案例 第9章 操作系统 83 9.1 BusyBox 83 9.2 Alpine 85 9.3 Debian/Ubuntu 86 9.4 CentOS/Fedora 88 9.5 本章小结 89 第10章 为镜像添加SSH服务 90 10.1 基于commit命令创建 90 10.2 使用Dockerfile创建 93 10.3 本章小结 95 第11章 Web服务与应用 96 11.1 Apache 96 11.2 Nginx 100 11.3 Tomcat 104 11.4 Jetty 108 11.5 LAMP 109 11.6 持续开发与管理 111 11.7 本章小结 114 第12章 数据库应用 115 12.1 MySQL 115 12.2 Oracle Database XE 117 12.3 MongoDB 118 12.4 Redis 124 12.5 Cassandra 126 12.6 本章小结 129 第13章 分布式处理与大数据平台 130 13.1 Hadoop 130 13.2 Spark 133 13.3 Storm 136 13.4 Elasticsearch 140 13.5 本章小结 141 第14章 编程开发 142 14.1 C/C++ 142 14.2 Java 146 14.3 Python 149 14.3.1 使用Python官方镜像 150 14.3.2 使用PyPy 151 14.3.3 使用 Flask 151 14.3.4 相关资源 154 14.4 JavaScript 154 14.4.1 使用Node.js 154 14.4.2 相关资源 158 14.5 Go 158 14.6 本章小结 161 第15章 容器与云服务 162 15.1 公有云容器服务 162 15.1.1 AWS 162 15.1.2 Google Cloud Platform 163 15.1.3 Azure 164 15.1.4 腾讯云 165 15.1.5 阿里云 165 15.1.6 华为云 166 15.1.7 UCloud 167 15.2 容器云服务 168 15.3 阿里云容器服务 172 15.4 时速云介绍 174 15.5 本章小结 175 第16章 容器实战思考 176 16.1 Docker 为什么会成功 176 16.2 研发人员该如何看待容器 177 16.3 容器化开发模式 178 16.4 容器与生产环境 180 16.5 本章小结 182 第三部分 进阶技能 第17章 核心实现技术 185 17.1 基本架构 185 17.2 命名空间 187 17.3 控制组 191 17.4 联合文件系统 193 17.5 Linux网络虚拟化 195 17.6 本章小结 197 第18章 配置私有仓库 199 18.1 安装Docker Registry 199 18.2 配置TLS证书 201 18.3 管理访问权限 202 18.4 配置Registry 205 18.5 批量管理镜像 211 18.6 使用通知系统 214 18.7 本章小结 217 第19章 安全防护与配置 218 19.1 命名空间隔离的安全 218 19.2 控制组资源控制的安全 219 19.3 内核能力机制 219 19.4 Docker服务端的防护 221 19.5 更多安全特性的使用 221 19.6 使用第三方检测工具 222 19.6.1 Docker Bench 222 19.6.2 clair 223 19.7 本章小结 224 第20章 高级网络功能 225 20.1 启动与配置参数 225 20.2 配置容器DNS和主机名 227 20.3 容器访问控制 228 20.4 映射容器端口到宿主主机的实现 229 20.5 配置容器网桥 231 20.6 自定义网桥 232 20.7 使用OpenvSwitch网桥 233 20.8 创建一个点到点连接 235 20.9 本章小结 236 第21章 libnetwork插件化网络功能 237 21.1 容器网络模型 237 21.2 Docker网络命令 238 21.3 构建跨主机容器网络 241 21.4 本章小结 243 第四部分 开源项目 第22章 Etcd—高可用的键值数据库 247 22.1 Etcd简介 247 22.2 安装和使用Etcd 248 22.3 使用客户端命令 253 22.3.1 数据类操作 255 22.3.2 非数据类操作 258 22.4 Etcd集群管理 260 22.4.1 构建集群 260 22.4.2 集群参数配置 263 22.5 本章小结 264 第23章 Docker三剑客之Machine 265 23.1 Machine简介 265 23.2 安装Machine 265 23.3 使用Machine 266 23.4 Machine命令 268 23.5 本章小结 272 第24章 Docker三剑客之Compose 273 24.1 Compose简介 273 24.2 安装与卸载 274 24.3 Compose模板文件 277 24.4 Compose命令说明 292 24.5 Compose环境变量 299 24.6 Compose应用案例一:Web负载均衡 300 24.7 Compose应用案例二:大数据Spark集群 304 24.8 本章小结 309 第25章 Docker三剑客之Swarm 310 25.1 Swarm简介 310 25.2 基本概念 311 25.3 使用Swarm 313 25.4 使用服务命令 316 25.5 本章小结 319 第26章 Mesos—优秀的集群资源调度平台 321 26.1 简介 321 26.2 Mesos安装与使用 322 26.3 原理与架构 330 26.3.1 架构 330 26.3.2 基本单元 331 26.3.3 调度 331 26.3.4 高可用性 332 26.4 Mesos配置解析 333 26.4.1 通用项 333 26.4.2 master专属配置项 333 26.4.3 slave专属配置项 335 26.5 日志与监控 338 26.6 常见应用框架 340 26.7 本章小结 341 第27章 Kubernetes—生产级容器集群平台 343 27.1 简介 343 27.2 核心概念 345 27.3 资源抽象对象 348 27.3.1 容器组 348 27.3.2 服务 349 27.3.3 存储卷 350 27.4 控制器抽象对象 351 27.5 其他抽象对象 353 27.6 快速体验 355 27.7 重要组件 359 27.7.1 Etcd 360 27.7.2 kube-apiserver 360 27.7.3 kube-scheduler 361 27.7.4 kube-controller-manager 362 27.7.5 kubelet 363 27.7.6 kube-proxy 364 27.8 使用kubectl 365 27.8.1 获取kubectl 365 27.8.2 命令格式 366 27.8.3 全局参数 367 27.8.4 通用子命令 369 27.9 网络设计 372 27.10 本章小结 374 第28章 其他相关项目 375 28.1 持续集成 375 28.2 容器管理 377 28.2.1 Portainer 377 28.2.2 Panamax 378 28.2.3 Seagull 378 28.3 编程开发 380 28.4 网络支持 381 28.4.1 Pipework 381 28.4.2 Flannel项目 382 28.4.3 Weave Net项目 382 28.4.4 Calico项目 383 28.5 日志处理 383 28.6 服务代理 385 28.7 标准与规范 389 28.8 其他项目 392 28.9 本章小结 396 附录 附录A 常见问题总结 398 附录B Docker命令查询 404 附录C 参考资源链接 411 |