深入理解 Redis

傑里米·尼爾森 (Jeremy Nelson)

  • 出版商: 電子工業
  • 出版日期: 2017-04-01
  • 定價: $534
  • 售價: 8.5$454
  • 語言: 簡體中文
  • 頁數: 300
  • 裝訂: 平裝
  • ISBN: 7121312018
  • ISBN-13: 9787121312014
  • 相關分類: Key-Value Store
  • 此書翻譯自: Mastering Redis
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

本書以由淺入深、由原理到應用場景的方式介紹了Redis 這款NoSQL 數據庫產品。書中不僅細致地講解了Redis 中的數據結構及流行的使用模式,還針對Redis 鍵的設計和管理,以及內存管理提出了建設性的方案。同時,作者深入Redis 源碼,將其內部構造通過源代碼調試的方式進行呈現。本書適合有一定NoSQL 經驗的開發者或者架構師閱讀。讀者可以從書中找到許多應用場景和解決方案,例如Docker 部署、Redis 消息隊列、基於Redis 的ETL 應用和基於Redis 的機器學習等。

作者簡介

Jeremy Nelson是科羅拉多斯普林市的一所四年制私立文理學院科羅拉多學院的一位元數據和系統圖書管理員。除了每週8小時的圖書館研究技術支持工作,為大學生提供信息素養指導,並監督圖書館的系統和編目部門這三項工作之外,Nelson正在積極研究和開發Catalog Pull平台中的各種組件和開源工具,供科羅拉多大學、科羅拉多州研究圖書館聯盟和國會圖書館使用。他還是語義網絡初創公司KnowledgeLinks.io的聯合創始人和CTO。
他之前在西部州科羅拉多大學和猶他大學有過圖書館工作經驗。在成為圖書管理員之前,他曾在各種軟件公司和金融服務機構中擔任程序員和項目經理。他的首本書Becoming a Lean Library於2015年出版,將精益創業和精益製造理念應用於圖書館和圖書館的運營。Nelson從諾克斯學院獲得了本科學位,並從University of Illinois Urbana-Champaign獲得了圖書館和信息科學的科學碩士。

關於審校者
Emilien Kenler在從事了一些小型Web項目之後,在2008年高中時開始專注於遊戲開發。直到2011年,他為不同的小組工作並專門從事系統管理。
2011年,在研究計算機科學工程的同時,他創立了一家公司銷售Minecraft服務器。他基於像Node.js和RabbitMQ這樣的新技術,創建了一個輕量級IaaS。
此後,他在TaDaweb擔任系統管理員,構建基礎架構並創建管理部署和監控的工具。
2014年,他在東京Wizcorp開啟了新的歷程。同年,他畢業於University of Technology of Compiègne。
Emilien為Packt Publishing編寫了MariaDB Essentials。他還負責了Learning Nagios 4、 MariaDB High Performance、OpenVZ Essentials、Vagrant Virtual Development Environment Cookbook和Getting Started with MariaDB-Second Edition的審校。
Saurabh Minni擁有計算機科學專業的工程學位。他有超過10年的工作經驗,通曉各種編程語言,包括彙編語言、 C、C++、Java、Delphi、JavaScript、Android、iOS、PHP、 Python、ZMQ、Redis、Mongo、Kyoto Tycoon、Cocoa、Carbon、 Apache Kafka、Apache Storm和ElasticSearch。總之,他是一位徹頭徹尾的程序員,喜歡每天學習與技術相關的新事物。
目前,他在Near公司(這是一家神奇的初創公司,正在搭建位置智能平台)中擔任技術架構師一職。除了處理幾個項目之外,他還負責部署Apache Kafka集群。這有助於簡化大數據處理系統中的數據消費。這些系統包括Apache Storm、Hadoop,等等。
Saurabh同時也是Apache Kafka Cookbook一書的作者。這是一本有關Apache Kafka的書,由Packt Publishing出版。他還負責Learning Apache Kafka一書的審校。該書由Packt Publishing出版。

目錄大綱

目錄
 

1為何選擇Redis?1 
合適之選?2 
嘗試使用Redis 4 
流行的使用模式9 
Redis不合心意?馬上再試試!11 
總結13 

2高級鍵管理與數據結構14 
Redis鍵14 
Redis鍵模式15 
鍵分隔符和命名約定17 
手動創建Redis模式19 
解構Redis對象映射器22 
鍵過期27 
鍵的注意事項27 
大O符號28 
為自定義代碼計算大O符號30 
回顧Redis數據結構的時間複雜度32 
字符串32 
哈希33 
列表34 
集合35 
有序集合36 
高級有序集合操作39 
位串和位操作39 
HyperLogLogs 41 
總結42 

3內存管理的建議與技巧44 
配置Redis 44 
主從復制45 
32位Redis 45 
INFO memory詳解47 
鍵過期49 
LRU鍵清除策略54 
創建內存高效的Redis數據結構62 
小巧的哈希、列表、集合和有序集合62 
把位、字節和Redis字符串用作隨機訪問數組68 
優化哈希,高效存儲69 
硬件和網絡延遲72 
操作系統建議74 
總結75 


4 Redis編程第一部分:Redis核心、客戶端和編程語言76 
Redis的內部結構76 
理解redis.h和redis.c 83 
Redis序列化協議93 
Redis RDB格式97 
使用Redis和Python創建協程99 
使用Node.js和Redis實現Todo列表應用103 
複製 公共訪問106 
總結106 

5 Redis編程第二部分:Lua腳本、管理與DevOps 108 
在Redis中使用Lua 108 
使用Redis的KEYS和ARGV 117 
Redis中的高級Lua腳本121 
MARC21數據提取121 
紙質文具在線商店123 
讓JSON-LD、Lua和Redis協同工作126 
Redis Lua調試器130 
Redis的編程與管理133 
主從復制134 
使用MULTI和EXEC實現事務136 
Redis在DevOps中扮演的角色139 
總結140 

6可伸縮性:Redis集群和Sentinel 142 
數據分區的方法142 
範圍分區143 
列表分區145 
哈希分區148 
複合分區149 
鍵哈希標籤150 
使用Twemproxy實現Redis集群151 
使用關聯數據片段服務器測試Twemproxy 152 
Redis集群的背景158 
Redis集群概覽159 
使用Redis集群160 
Redis集群實時重新配置及重新分片165 
故障轉移168 
在Redis集群中替換或者升級節點170 
使用Redis Sentinel進行監控171 
為區域代碼列表分區配置Redis Sentinel 173 
總結176 

7 Redis與互補的NoSQL技術177 
NoSQL技術的繁榮177 
Redis作為MongoDB的分析補充181 
Redis 為ElasticSearch的預處理組件192 
在BIBCAT中使用Redis和ElasticSearch 193 
ElasticSearch、Logstash和Redis 198 
Redis作為Fedora Commons的智能緩存補充199 
總結205 

8 Docker容器與雲端部署206 
Linux容器206 
與Redis相關的Docker基礎211 
Docker鏡像中的層219 
Docker文件系統後端220 
Docker和Redis的問題227 
使用Docker Compose打包應用程序227 
Redis和AWS 232 
專門的雲託管選項233 
Redis Labs 234 
DigitalOcean Redis 234 
總結235 

9任務管理與消息隊列236 
Redis的發布/訂閱模式概述236 
發布/訂閱RESP回复237 
SUBSCRIBE和UNSUBSCRIBE RESP數組237 
PSUBSCRIBE和UNSUBSCRIBE數組239 
使用redis-cli進行發布/訂閱240 
Redis發布訂閱實戰242 
第一個工作站採用Python進行發布訂閱244 
第二個工作站採用Node.js進行發布訂閱246 
第三個工作站使用Lua客戶端進行發布訂閱248 
Redis鍵空間通知251 
使用Redis和Celery進行任務管理255 
GIS和RestMQ 259 
使用RestMQ進行任務管理262 
使用Redis技術進行 息通信264 
使用Disque進行消息通信264 
總結266 

10信息流的測量與管理267 
基於Redis的ETL方案267 
將JSON轉換成RESP 273 
管理Redis時的安全考慮279 
使用Redis Web儀表板進行運營監測282 
機器學習283 
樸素貝葉斯與工作分類284 
使用Redis實現線性規劃294 
總結299 
來源300