《大数据高并发Redis一本通》配书资源

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

给大家带来的是《大数据高并发Redis一本通》配书资源,介绍了关于大数据、高并发、Redis、配书资源、Redis方面的内容,本书是由机械工业出版社出版,已被212人关注,由热心网友蒯春岚提供,目前本书在Redis类综合评分为:8.8分。

资源详情相关推荐
《《大数据高并发Redis一本通》配书资源》封面
  • 出版社:机械工业出版社
  • 作者:张文亮
  • 大小:101.7 MB
  • 类别:Redis
  • 热度:479
  • Java EE互联网轻量级框架整合开发:SSM框架和Redis实现
  • Redis 命令参考 2019
  • 史上最全Redis面试题及答案大全
  • 深入理解Redis
  • Redis实战
  • 配套书籍介绍

    本书涵盖Redis数据类型的使用场景、各种类型的API的使用和底层数据结构源码解析、在DevOps环境中使用Redis的综合实践、Redis主从架构、RedisSentinel Redis、Redis集群环境搭建及其实现的高可用与高可扩原理等内容,提供深入浅出的实战案例,旨在帮助读者深入了解Redis数据结构领域和日常运维Redis所碰到的常见问题解决方案,。

    本书适合Redis新手、所有对Redis感兴趣的开发与运维人员阅读和参考,同时还可作为高等院校相关专业的参考教程。

    目录

    • 前言
    • 第1章 大数据高并发离不开Redis1
    • 1.1 NoSQL发展历程1
    • 1.2 初识Redis3
    • 1.3 Redis的魅力3
    • 1.4 喜欢Redis的理由4
    • 1.5 学习Redis的第一步6
    • 1.5.1 在Windows环境下安装Redis6
    • 1.5.2 在Linux环境下安装Redis11
    • 1.5.3 在Docker环境下安装Redis13
    • 1.5.4 Redis界面化管理工具17
    • 1.6 redis.conf文件的详细说明18
    • 1.7 Redis基本操作21
    • 1.7.1 启动Redis服务器21
    • 1.7.2 远程登录21
    • 1.7.3 切换数据库21
    • 1.7.4 删除键22
    • 1.7.5 删除当前数据库的所有键22
    • 第2章 Redis多种数据类型使用场景23
    • 2.1 String数据类型的API和使用场景23
    • 2.1.1 String数据类型的常规操作23
    • 2.1.2 结合应用场景演练24
    • 2.2 String也能做,为什么还要用Hash30
    • 2.2.1 Hash数据类型的常规操作31
    • 2.2.2 结合应用场景演练31
    • 2.3 一种类型多种用法,原来List还可以这样做34
    • 2.3.1 List模拟数据结构35
    • 2.3.2 List常规操作38
    • 2.3.3 利用列表迅速提升网站首页的并发量38
    • 2.4 开启Set数据类型的正确操作姿势39
    • 2.4.1 明星绯闻和微博瘫痪的那些事39
    • 2.4.2 抽奖逻辑39
    • 2.4.3 文章点赞或者投票40
    • 2.4.4 共同好友统计41
    • 2.5 微服务的限流操作和Zset的那些瓜葛42
    • 2.5.1 利用Zset实现限流43
    • 2.5.2 新闻排行榜场景实战47
    • 2.5.3 直播打赏排名场景实战48
    • 第3章 数据结构底层50
    • 3.1 String数据结构底层解析51
    • 3.1.1 String的三种编码51
    • 3.1.2 SDS和内存重新分配54
    • 3.1.3 embstr编码的内容追加56
    • 3.1.4 内存空间释放57
    • 3.1.5 SDS特征58
    • 3.2 Hash数据结构底层解析58
    • 3.2.1 ZipList数据结构58
    • 3.2.2 HashTable数据结构66
    • 3.2.3 ZipList和HashTable的抉择81
    • 3.3 List数据结构底层解析83
    • 3.3.1 单向链表83
    • 3.3.2 双向链表84
    • 3.3.3 Redis链表84
    • 3.3.4 快速列表86
    • 3.4 Set数据结构底层解析91
    • 3.4.1 整数集合91
    • 3.4.2 intset和HashTable的抉择94
    • 3.5 Zset数据结构底层解析95
    • 3.5.1 跳跃表数据结构解析95
    • 3.5.2 ZipList和跳跃表的抉择99
    • 第4章 数据持久化101
    • 4.1 RDB方式持久化102
    • 4.1.1 save触发方式103
    • 4.1.2 bgsave触发方式103
    • 4.1.3 后台触发105
    • 4.1.4 RDB备份的应用场景107
    • 4.2 AOF方式持久化107
    • 4.2.1 AOF持久化流程108
    • 4.2.2 相关参数配置113
    • 4.2.3 重写操作113
    • 4.3 AOF和RDB的数据恢复顺序115
    • 4.4 RDB和AOF持久化的优缺点116
    • 4.4.1 RDB持久化的优缺点116
    • 4.4.2 AOF持久化的优缺点116
    • 4.5 AOF+RDB混合模式配置117
    • 第5章 Redis的事务和Lua脚本操作119
    • 5.1 事务概述119
    • 5.2 事务使用120
    • 5.2.1 事务的三个阶段120
    • 5.2.2 事务范例120
    • 5.3 事务性质123
    • 5.3.1 原子性123
    • 5.3.2 一致性124
    • 5.3.3 隔离性124
    • 5.3.4 持久性124
    • 5.3.5 安全性125
    • 5.4 Lua脚本126
    • 5.4.1 eval126
    • 5.4.2 Lua和Redis数据类型的转换128
    • 5.4.3 脚本的原子性130
    • 5.4.4 错误处理130
    • 5.4.5 带宽和evalsha131
    • 5.4.6 脚本缓存131
    • 5.4.7 script命令和纯函数脚本132
    • 5.4.8 全局变量保护133
    • 5.4.9 内部脚本133
    • 5.4.10 沙箱和最大执行时间135
    • 5.4.11 Redis脚本命令136
    • 5.4.12 Lua脚本的好处138
    • 5.5 Lua实战138
    • 第6章 pub/sub和Stream142
    • 6.1 频道的订阅与消息发送142
    • 6.2 发布与订阅的使用143
    • 6.3 发布与订阅的原理145
    • 6.4 订阅模式146
    • 6.5 pub和sub使用范例147
    • 6.6 与其他发布和订阅比较148
    • 6.7 Stream概述148
    • 6.8 Stream实例154
    • 6.8.1 同组消费模式154
    • 6.8.2 不同组消费模式155
    • 6.8.3 消息确认157
    • 第7章 主从复制158
    • 7.1 主从复制概述159
    • 7.2 主从复制工作原理159
    • 7.2.1 连接建立阶段160
    • 7.2.2 数据同步阶段164
    • 7.2.3 命令传播阶段181
    • 7.2.4 身份验证183
    • 7.2.5 延迟与不一致184
    • 7.3 Redis复制的注意事项185
    • 7.3.1 复制的注意事项185
    • 7.3.2 复制的安全性185
    • 7.3.3 无须磁盘参与的复制186
    • 7.3.4 只读性质的从节点186
    • 7.3.5 主从多种模式下的问题187
    • 7.4 搭建主从节点的实例189
    • 7.4.1 以命令行方式搭建主从节点189
    • 7.4.2 以配置文件方式搭建主从节点192
    • 7.4.3 以身份验证模式搭建主从架构195
    • 7.5 主从架构的“坑”和优化技巧197
    • 7.5.1 复制超时问题197
    • 7.5.2 主从架构数据应用问题198
    • 7.5.3 主从复制中断问题199
    • 7.5.4 主从复制应用中的优化技巧199
    • 7.5.5 主从架构重要配置总结200
    • 7.6 主从架构的作用202
    • 第8章 哨兵模式203
    • 8.1 哨兵架构概述203
    • 8.2 哨兵架构的搭建204
    • 8.2.1 运行Sentinel205
    • 8.2.2 Sentinel配置205
    • 8.2.3 Windows 10搭建Redis 5版本哨兵架构211
    • 8.2.4 Linux系统哨兵架构的搭建和验证215
    • 8.3 Sentinel API217
    • 8.3.1 Sentinel命令217
    • 8.3.2 其他相关配置和说明218
    • 8.4 哨兵细节原理分析221
    • 8.4.1 sdown与odown221
    • 8.4.2 哨兵集群的自动发现机制221
    • 8.4.3 故障转移的重新配置222
    • 8.4.4 从节点选举和优先级222
    • 8.4.5 算法和内部结构223
    • 8.4.6 配置epoch223
    • 8.4.7 配置传播224
    • 8.4.8 网络分区下的一致性224
    • 8.5 客户端访问哨兵架构的系统226
    • 8.5.1 C#连接Redis哨兵架构的系统226
    • 8.5.2 Java连接Redis哨兵架构的系统227
    • 8.5.3 客户端原理227
    • 第9章 Redis集群228
    • 9.1 集群概述228
    • 9.2 集群作用228
    • 9.3 集群设计注意事项229
    • 9.4 Redis集群的搭建229
    • 9.4.1 在Windows 10下搭建Redis 5集群230
    • 9.4.2 在Linux下搭建Redis 6集群233
    • 9.5 数据分区策略234
    • 9.6 Redis一致性保证235
    • 9.7 节点通信机制236
    • 9.7.1 通信端口236
    • 9.7.2 Gossip协议237
    • 9.8 集群的其他细节239
    • 9.8.1 Redis集群中的主从复制239
    • 9.8.2 Redis集群客户端和服务器端的协议239
    • 9.8.3 故障检测241
    • 9.9 从节点的选举和提升242
    • 9.9.1 主节点回复从节点的投票请求244
    • 9.9.2 从节点选举的竞争情况245
    • 9.9.3 update消息245
    • 9.9.4 备份迁移245
    • 9.9.5 备份迁移算法246
    • 9.9.6 安全写入247
    • 9.9.7 键分布模型247
    • 9.9.8 键哈希标签249
    • 9.9.9 集群节点信息和源码249
    • 9.9.10 集群相关命令251
    • 9.10 集群重新分片251
    • 9.11 扩容和缩容253
    • 9.11.1 扩容253
    • 9.11.2 缩容258
    • 9.12 故障转移和高可用260
    • 9.13 集群使用时的注意事项262
    • 第10章 Redis 6新特征264
    • 10.1 为什么Redis 6是多线程266
    • 10.2 开启多线程267
    • 10.3 Redis服务基准测试268
    • 10.4 ACL安全策略269
    • 10.4.1 ACL规则269
    • 10.4.2 使用外部ACL文件271
    • 10.4.3 使用ACL命令配置ACL271
    • 10.4.4 ACL实例271
    • 第11章 布隆过滤器275
    • 11.1 布隆过滤器概述275
    • 11.2 环境安装275
    • 11.2.1 模块化安装275
    • 11.2.2 Docker安装276
    • 11.3 布隆过滤器的原理277
    • 11.4 应用场景278
    • 第12章 Redis内存相关策略和内存碎片279
    • 12.1 maxmemory配置279
    • 12.2 数据淘汰策略280
    • 12.3 LRU算法280
    • 12.4 LFU算法280
    • 12.5 数据过期删除策略281
    • 12.6 主从架构和数据持久化对数据的过期处理281
    • 12.7 内存碎片282
    • 12.7.1 Redis内存碎片的形成282
    • 12.7.2 内存使用情况282
    • 12.7.3 清理内存碎片283
    • 第13章 分布式锁285
    • 13.1 为什么需要分布式锁285
    • 13.2 非阻塞锁的实现和原理288
    • 13.3 阻塞锁的实现和原理290
    • 13.4 Redlock原理294
    • 13.4.1 什么是Redlock294
    • 13.4.2 单节点上实现Redlock295
    • 13.4.3 Redlock算法295
    • 第14章 高频面试题301
    • 14.1 缓存穿透301
    • 14.2 缓存击穿304
    • 14.3 缓存雪崩305
    • 附录 Redis API详情306
    精选笔记1:PHP redis实现超迷你全文检索

    1小时8分钟前回答

    情景: 我们平台有好多游戏, 运营的同事在查询某一款游戏的时候, 目前使用的是html的select下拉列表的展现形式, 运营的同事得一个个去找,然后选中,耗时又费眼

    效果: 输入"三国"或者"国三", 将自动列出所有包含"三国"的游戏名字, 输入不限顺序; 例如输入"杀三国",仍然会将"三国杀"这款游戏找出来

    实现: 我用redis的集合+PHP的array_intersect()和mb系列函数, 实现了一个超迷你的全文检索功能

    原理: (大道不过两三言,说穿不值一文钱,哈哈)

    1、将所有的游戏名字读出来,拆分成单个汉字

    2、 将这些汉字作为redis集合的键,写入redis,每个集合里的值是所有那些游戏名字中包含此汉字的游戏的id

    3、当用户输入文字的时候通过ajax异步请求,将用户输入传给PHP

    4、将输入的文字拆分成单个汉字, 分别找到这些汉字在redis中的集合值

    5、取出来,求交集,就找到了同时包含这几个汉字的游戏的id

    6、最后到数据库里查出来相应的游戏信息即可

    缺点: 删除数据不方便

    PHP写入redis和检索的代码:

    //自动补全
      //不限输入汉字的前后顺序: 输入"国三杀" => 输出 "三国杀"
      function getAutoComplate()
      {
        //$word = $this->input->post('word');
        $word = '三国';
        if (empty($word)) {
          exit('0');
        }
        $intWordLength = mb_strlen($word, 'UTF-8');
    
        $this->load->library('iredis');
        if (1 == $intWordLength) {
          $arrGid = $this->iredis->getAutoComplate($word);
        } else {
          $arrGid = array();
          for ($i=0; $i < $intWordLength; $i++) {
            $strOne = mb_substr($word, $i, 1, 'UTF-8');
            $arrGidTmp = $this->iredis->getAutoComplate($strOne);
            $arrGid = empty($arrGid) ? $arrGidTmp : array_intersect($arrGid, $arrGidTmp); //求交集,因为传入的参数个数不确定,因此不能直接求交集
          }
        }
    
        $arrGame = $this->gamemodel->getGameNameForAutoComplate($arrGid);
        // var_dump($arrGame);exit;
        $jsonGame = json_encode($arrGame);
        exit($jsonGame);
      }
    
      //自动补全, 建立索引
      function setAutoComplate()
      {
        $arrGame = $this->gamemodel->getAllGameNameForAutoComplate();
        $arrIndex = array();
        foreach ($arrGame as $gid => $gname) {
          $intGnameLength = mb_strlen($gname, 'UTF-8');
          for ($i=0; $i < $intGnameLength; $i++) {
            $strOne = mb_substr($gname, $i, 1, 'UTF-8');
            $arrIndex[$strOne][] = $gid;
          }
        }
        
        $this->load->library('iredis');
        foreach ($arrIndex as $word => $arrGid) {
          foreach ($arrGid as $gid) {
            $this->iredis->setAutoComplate($word, $gid);
          }
        }
        
      }
    
    

    操作redis的方法

    //自动补全功能
      public function setAutoComplate($key, $value)
      {
        $youxikey = 'youxi_'.$key;
        $this->sAdd($youxikey, $value);
      }
    
      //自动补全功能
      public function getAutoComplate($key)
      {
        $youxikey = 'youxi_'.$key;
        return $this->sMembers($youxikey);
      }
    
    

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

    相关声明:

    《大数据高并发Redis一本通》配书资源 下载资源由用户 苍平婉 于 2021-12-03 14:17:51 分享至网盘,版权归机械工业出版社所有。仅供想学习Redis的网友交流使用,专题参考:Redis,

    Redis相关资源

    • Redis深度历险:核心原理与应用实践

      Redis深度历险:核心原理与应用实践

      Redis 是互联网技术领域使用*为广泛的存储中间件,以其超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。

      大小:133.2 MBRedis

      立即下载
    • Netty、Redis、Zookeeper高并发实战

      Netty、Redis、Zookeeper高并发实战

      这书以便让读者扎稳高性能基本,通俗易懂地分析高并发IO的最底层原理,细腻细致地分析Reactor高性能方式,图片配文字地介绍Java多线程回调函数方式。把握这种基本原理,可以协助读者处理

      大小:15.6 MBNetty

      立即下载
    • Redis深度历险:核心原理和应用实践

      Redis深度历险这本书的口碑不言而喻,本文档来源自此书,该资源是高清PDF,聚焦Redis实战,探究Redis源码与核心原理,对系统学习redis有很大帮助,喜欢的朋友可下载试试! 总共分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5 大块内容。基础和应用篇讲解对读者来说有价值的内容,可以直接应用到实际工作中;原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界;拓展篇帮助读者拓展技术视野和夯实基础,便于进阶学习;源码篇

      大小:4.5 MBRedis

      立即下载
    • Redis开发运维实践指南

      Redis开发运维实践指南

      本手册是我(作者)在一家中国大陆的中型商业银行做大数据系统工程师中进行的总结归纳,包含开发和运维的各方面的使用、应用场景和最佳实践,以及各个高可用架构的搭建和测试 目录 Redis开发运维实践指南 简述 数据操作 专题功能 开发设计规范 上线部署规划 常见运维操作 数据迁移 问题处理 测试方法 Redis安全问题 高可用和集群简述 高可用和集群架构与实践 Sharding架构(Redis 3.0 Cluster) Sharding架构(Twemproxy)

      大小:3.97 MBRedis开发

      立即下载
    • 左手MongoDB右手Redis:从入门到商业实战

      左手MongoDB右手Redis:从入门到商业实战

      本书配有同步教学视频。能帮助读者快速而全面地了解每章的内容。本书针对MongoDB和Redis这两个主流的NoSQL数据库编写,采用“理论 实践”的形式编写,共计45个实例。

      大小:26.38 MB数据挖掘

      立即下载
    • Redis开发与运维

      Redis开发与运维

      本书全面讲解Redis基本功能及其应用,并结合线上开发与运维中的实际案例,深入分析并总结了实际工作中遇到的“陷阱”,以及背后的原因,包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验,对入门与进阶DevOps的开发者提供有价值的帮助。主要内容包括:Redis的安装配置、API、各种高效功能、客户端、持久化、复制、高可用、内存、哨兵、集群、缓存设计等,R

      大小:236 MBRedis

      立即下载
    • Redisson使用手册

      Redisson是一个在Redis的基础上实现的Java驻内存数据网格。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote ser

      大小:1.57 MBRedisson

      立即下载

    Redis配套笔记

    13小时46分钟前回答

    Java使用Redisson分布式锁实现原理

    1. 基本用法 dependency groupIdorg.redisson/groupId artifactIdredisson/artifactId version3.8.2/version/dependency Config config = new Config();config.useClusterServers() .setScanInterval(2000) // cluster state scan interval in milliseconds .addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001") .addNodeAddress("redis://127.0.0.1:7002");RedissonClient redisson = Redisson.create(config);RLock lock = redisson.getLock("anyLock");lock.lock();try { ...} finally { lock.unlock();} 针对上面这段代码,重点看一下Redisson是如何基于Redis实现分布式锁的 Redisson中提供的加锁的方法有很多,但大致类似,此处只看lock()方法 更多请参见https://github.com/redisson/redisson/wiki/8.-distributed-locks-and-synchronizers 2. 加锁 可以看到,调用……

    19小时32分钟前回答

    java基于jedisLock—redis分布式锁实现示例代码

    分布式锁是啥? 单机锁的概念:我们正常跑的单机项目(也就是在tomcat下跑一个项目不配置集群)想要在高并发的时候加锁很容易就可以搞定,java提供了很多的机制例如:synchronized、volatile、ReentrantLock等锁的机制。 为啥需要分布式锁:当我们的项目比较庞大的时候,单机版的项目已经不能满足吞吐量的需求了,需要对项目做负载均衡,有可能还需要对项目进行解耦拆分成不同的服务,那么肯定是做成分布式的项目,分布式的项目因为是不同的程序控制,所以使用java提供的锁并不能完全保证并发需求,需要借助第三方的框架来实现对并发的阻塞控制,来满足实际业务的需要。 一、使用分布式锁要满足……

    5小时18分钟前回答

    Java利用Redis实现高并发计数器的示例代码

    业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。使用Redis的Incr自增命令可以轻松实现以上需求。以一个接口一天限制调用次数为例: /** * 是否拒绝服务 * @return */ private boolean denialOfService(String userId){ long count=JedisUtil.setIncr(DateUtil.getDate()+""+userId+""+"queryCarViolation", 86400); if(count=10){ return false; } return true; } /** * 查询违章 * @param plateNumber车牌 * @param vin 车架号 * @param engineNo发动机 * @param request * @param response * @throws Exception */ @RequestMapping("/queryCarViolationList.json") @AuthorizationApi public void queryCarViolationList(@CurrentToken T……