《基于Docker的Redis入门与实战》源代码,音视频

  • 更新时间:
  • 7661人关注
  • 点击下载

给大家带来的是《基于Docker的Redis入门与实战》源代码,音视频,介绍了关于Docker、Redis、入门与实战、源代码、音视频、Docker方面的内容,本书是由机械工业出版社出版,已被950人关注,由热心网友通芊丽提供,目前本书在Docker类综合评分为:8.2分。

资源详情相关推荐
《《基于Docker的Redis入门与实战》源代码,音视频》封面
  • 出版社:机械工业出版社
  • 作者:金华,胡书敏
  • 大小:900 MB
  • 类别:Docker
  • 热度:745
  • Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署
  • 深入浅出Docker
  • Docker与Kubernetes开源书
  • Swarm容器编排与Docker原生集群
  • 循序渐进学Docker
  • 配套书籍介绍

    本书围绕“高并发大数据”的项目需求,全面讲述分布式缓存组件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如何构建微服务应用。

    目录

    • 前言
    • 第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上安装Docker3
    • 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与Redis125
    • 8.1 Java通过Jedis读写Redis125
    • 8.1.1 以Maven方式引入Jedis包125
    • 8.1.2 通过Jedis读写Redis字符串126
    • 8.1.3 操作各种Redis命令128
    • 8.1.4 以事务的方式操作Redis129
    • 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集群和Redis178
    • 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框架里引入Redis218
    • 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
    精选笔记1:Spring Boot与Docker部署详解

    2小时46分钟前回答

    本文介绍了Spring Boot与Docker部署,分享给大家,希望对大家有帮助

    开启Docker远程访问

    首先需要开启docker远程访问功能,以便可以进行远程操作。

    CentOS 6

    修改/etc/default/docker文件,重启后生效(service docker restart)。

    DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375"

     CentOS 7

    打开/usr/lib/systemd/system/docker.service文件,修改ExecStart这行。

    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

    重启后生效

    systemctl daemon-reload  
    systemctl restart docker.service 

    测试是否生效

    curl http://127.0.0.1:2375/info

    新建Maven工程

    pom.xml配置如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>test.springboot.docker</groupId>
      <artifactId>docker-springboot</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
      </parent>
    
      <properties>
        <java.version>1.8</java.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.14</version>
            <configuration>
              <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
              <dockerDirectory>src/main/docker</dockerDirectory>
              <dockerHost>http://192.168.1.200:2375</dockerHost>
              <resources>
                <resource>
                  <targetPath>/</targetPath>
                  <directory>${project.build.directory}</directory>
                  <include>${project.build.finalName}.jar</include>
                </resource>
              </resources>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    
    

    imageName:指定了镜像的名字

    dockerDirectory:指定Dockerfile的位置

    dockerHost:指定Docker远程API地址

    resources:指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用jar包需要纳入

    创建Java类

    package hello;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class Application {
    
      @RequestMapping("/")
      public String home() {
        return "Hello Docker World";
      }
    
      public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
      }
    
    }
    
    

    创建Dockerfile

    在src/main/docker目录下创建一个名为Dockerfile的文件,配置如下:

    FROM java
    VOLUME /tmp
    ADD docker-springboot-0.0.1-SNAPSHOT.jar app.jar
    RUN bash -c 'touch /app.jar'
    ENV JAVA_OPTS=""
    ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

    FROM java:指Docker Hub上官方提供的java镜像,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用。

    VOLUME /tmp:创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录。

    ADD docker-springboot-0.0.1-SNAPSHOT.jar app.jar:将应用jar包复制到/app.jar

    ENTRYPOINT:表示容器运行后默认执行的命令

    完整目录结构如下所示:

    Spring Boot与Docker部署详解

    运行以下命令创建Docker镜像:package docker:build

    Spring Boot与Docker部署详解

    Docker启动镜像

    查看项目是否上传成功

    Spring Boot与Docker部署详解

    启动镜像

    docker run -p 8888:8080 springboot/docker-springboot

    通过浏览器访问

    Spring Boot与Docker部署详解

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

    相关声明:

    《基于Docker的Redis入门与实战》源代码,音视频 下载资源由用户 慎妙竹 于 2021-12-04 07:34:10 分享至网盘,版权归机械工业出版社所有。仅供想学习Docker的网友交流使用,专题参考:Docker,

    Docker相关资源

    Docker配套笔记

    13小时35分钟前回答

    spring boot项目生成docker镜像并完成容器部署的方法步骤

    一、问题产生 把spring boot项目生成的jar打成docker镜像并生成docker容器完成部署是比较简单方便的部署方式,而且部署过程很少会出错。 二、部署步骤 1.利用maven或者gradle完成打包工作,打成jar包的形式。 2.在项目中的任意位置创建Dockerfile文件,本人的文件如下: FROM java:8VOLUME /tmpADD front-1.0-SNAPSHOT.jar front.jarRUN bash -c 'touch /front.jar'ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/front.jar"] FROM java:8是指含有jdk1.8的镜像 VOLUE /tmp/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录 ADD front-1.0-SNAPSHOT.jar front.jar 添加自己的项目到到front.jar中,注意:这里的包名要和……

    3小时20分钟前回答

    快速解决docker-py api版本不兼容的问题

    docker提供了Python、Go等编程语言的api。最近打算用docker SDK for Python(以下简称docker-py)做点东西,本来以为按照官网上的步骤安装很简单,pip install docker 就行,然而出现了版本不兼容的问题。 报错如下: docker.errors.APIError: 400 Client Error: Bad Request ("client is newer than server (client API version: 1.30, server API version: 1.19)") 可以使用指令 docker version查看版本号,果然api版本是1.19,但是docker-py的版本是1.30。在docker-py官网 里找一找解决方法,from_env()的解释如下: from_env() Return a client configured from environment variables. The environment variables used are the same as those used by the Docker command-line client. They are: DOCKER_HOST The URL to the Docker host……

    16小时18分钟前回答

    ubuntu下在docker中安装mysql5.6 的方法

    1.安装mysql5.6 docker run mysql:5.6 等所有项目都是Download complet 安装完毕 5.6: Pulling from library/mysql10a267c67f42: Pull complete c2dcc7bb2a88: Pull complete 17e7a0445698: Pull complete 9a61839a176f: Pull complete d4657fda01d9: Pull complete c5278a445e5d: Pull complete 197c0b76f238: Pull complete f54c5432bac4: Pull complete c26b15abee8a: Pull complete 80dbe6022c18: Pull complete 435678c09612: Pull complete Digest: sha256:84372107beb1de34bd4673049ea61bc35f374a2b4f19fd5a3abd4d0a2a50b715Status: Downloaded newer image for mysql:5.6error: database is uninitialized and password option is not specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD 2.使用本地账号创建一个文件夹用来映射docker中mysql的配置……