Redis 6 開發與實戰
內容描述
Redis是一個十分熱門的內存數據庫,它擁有眾多優秀特性,已經被越來越多的公司採用,值得每一位開發者學習。通過本書講述的Redis在開發和運維等方面的案例,讀者不僅可以系統地學到有關Redis的大量知識,還可以將案例中所講解的內容用於開發和運維等在內的各類生產實踐。書中案例涉及的各種知識、命令和工具,均來自作者一線企業級應用的總結。本書的特色在於講解知識點的同時,輔助以大量生動的例子,以幫助讀者更好的理解Redis的使用。
本書通過實戰的理論和案例全面系統的講解了Redis技術,適合所有渴望深入學習Redis的讀者。
目錄大綱
1章 初識Redis 1
1.1 Redis快速入門1
1.1.1 Redis簡介1
1.1.2 Redis特性2
1.2 Redis環境搭建3
1.2.1 在Windows下安裝Redis 4
1.2.2 在Linu下安裝Redis 7
1.3 Redis可視化工具13
1.4 搭建Redis集環境14
1.4.1 配置VMware準備安裝CentOS 15
1.4.2 安裝Linu 18
1.4.3 安裝VMware Tools 20
1.4.4 虛擬機與宿主機的網絡設置21
1.4.5 複製虛擬機25
2章Redis常用數據類型及命令28
2.1 String類型28
2.1.1 SET 28
2.1.2 SETNX 29
2.1.3 SETEX 29
2.1.4 SETRANGE 30
2.1.5 MSET 30
2.1.6 MSETNX 31
2.1.7 APPEND 31
2.1.8 GET 32
2.1.9 MGET 32
2.1.10 GETRANGE 33
2.1.11 GETSET 33
2.1.12 STRLEN 34
2.1.13 DECR 34
2.1.14 DECRBY 35
2.1.15 INCR 35
2.1.16 INCRBY 36
2.2 Hash類型36
2.2.1 HSET 36
2.2.2 HSETNX 37
2.2.3 HMSET 37
2.2.4 HGET 37
2.2.5 HMGET 38
2.2.6 HGETALL 38
2.2.7 HDEL 38
2.2.8 HLEN 39
2.2.9 HEXISTS 39
2.2.10 HINCRBY 40
2.2.11 HKEYS 40
2.2.12 HVALS 41
2.3 List類型41
2.3.1 LPUSH 41
2.3.2 LPUSHX 42
2.3.3 RPUSH 42
2.3.4 RPUSHX 43
2.3.5 LPOP 43
2.3.6 RPOP 44
2.3.7 LLEN 44
2.3.8 LREM 45
2.3.9 LSET 46
2.3.10 LTRIM 47
2.3.11 LINDEX 48
2.3.12 LINSERT 49
2.3.13 RPOPLPUSH 49
2.4 Set類型50
2.4.1 SADD 51
2.4.2 SREM 51
2.4.3 SMEMBERS 52
2.4.4 SCARD 52
2.4.5 SMOVE 53
2.4.6 SPOP 53
2.4.7 SRANDMEMBER 54
2.4.8 SINTER 55
2.4.9 SINTERSTORE 55
2.4.10 SUNION 56
2.4.11 SUNIONSTORE 56
2.4.12 SDIFF 57
2.4.13 SDIFFSTORE 57
2.5 Sorted Set類型58
2.5.1 ZADD 58
2.5.2 ZREM 59
2.5.3 ZCARD 60
2.5.4 ZCOUNT 61
2.5.5 ZSCORE 61
2.5.6 ZINCRBY 62
2.5.7 ZRANGE 62
2.5.8 ZREVRANGE 63
2.5.9 ZREVRANGEBYSCORE 64
2.5.10 ZRANK 64
2.5.11 ZREVRANK 65
2.5.12 ZREMRANGEBYRANK 65
2.5.13 ZREMRANGEBYSCORE 66
2.5.14 ZINTERSTORE 67
2.5.15 ZUNIONSTORE 68
2.6 Redis HyperLogLog 69
2.6.1 Redis HyperLogLog常用命令69
2.6.2 Redis HyperLogLog實例69
3章Redis常用命令71
3.1 鍵值相關命令71
3.1.1 KEYS 71
3.1.2 SCAN 72
3.1.3 EXISTS 73
3.1.4 DEL 73
3.1.5 EXPIRE 73
3.1.6 TTL 74
3.1.7 SELECT 74
3.1.8 MOVE 74
3.1.9 PERSIST 75
3.1.10 RANDOMKEY 75
3.1.11 RENAME 75
3.1.12 TYPE 76
3.2 服務器相關命令76
3.2.1 PING 76
3.2.2 ECHO 76
3.2.3 QUIT 76
3.2.4 DBSIZE 76
3.2.5 INFO 77
3.2.6 MONITOR 79
3.2.7 CONFIG GET 80
3.2.8 FLUSHDB 80
3.2.9 FLUSHALL 80
4章Redis級主題81
4.1 服務器配置81
4.1.1 Redis服務器允許遠程主機訪問81
4.1.2 客戶端遠程連接Redis服務器82
4.1.3 設置密碼82
4.1.4 Redis端口修改83
4.1.5 查看配置84
4.1.6 修改配置84
4.1.7 配置項說明84
4.2 Redis事務86
4.2.1 Redis事務的常用命令86
4.2.2 簡單事務控制87
4.2.3 取消一個事務87
4.2.4 樂觀鎖控制複雜事務88
4.3 Redis發布和訂閱90
4.3.1 Redis發布和訂閱的常用命令90
4.3.2 Redis發布和訂閱實例90
4.4 Redis管道91
4.5 數據備份與恢復92
4.6 Redis性能93
4.7 Redis客戶端連接94
4.8 Redis服務開機自啟動94
4.8.1 Windows下Redis服務開機自啟動95
4.8.2 Linu下Redis服務開機自啟動96
4.9 Redis內存分析工具97
5章Redis緩存的持久化99
5.1 持久化機制99
5.1.1 配置RDB 100
5.1.2 配置AOF 101
5.2 Redis過期key清除策略103
6章Redis集環境部署105
6.1 主從復制105
6.1.1 Redis主從復制原理106
6.1.2 Redis主從復制安裝過程106
6.1.3 Redis主從復制關係108
6.2 哨兵模式109
6.2.1 災備切換Sentinel的使用109
6.2.2 Redis Sentinel的安裝與配置111
6.2.3 主從切換116
6.3 Redis集118
6.3.1 Redis集環境118
6.3.2 開始Redis集搭建119
6.3.3 Redis集代理125
6.3.4 Redis集特點128
6.3.5 新增Redis集節點130
6.3.6 刪除Redis集節點139
7章Redis開發實戰142
7.1 搭建開發Redis的Java開發環境142
7.1.1 在Windows下安裝Java 8 142
7.1.2 安裝Tomcat 9 145
7.1.3 搭建IntelliJ IDEA開發環境146
7.2 使用Java作Redis 147
7.2.1 連接Redis的兩種方式147
7.2.2 作String 150
7.2.3 作Map 151
7.2.4 作List 152
7.2.5 作Set 153
7.2.6 排序153
7.2.7 Redis存儲圖片154
7.2.8 Redis存儲Object 158
7.2.9 Redis存儲和計算用戶訪問量161
7.3 Redis調用方式162
7.3.1 普通同步162
7.3.2 事務162
7.3.3 管道163
7.3.4 管道中調用事務163
7.4 Redis集與Java 164
7.5 實例1:使用Redis獲取用戶的共同好友164
7.5.1 初始化數據165
7.5.2 使用Jedis獲取用戶的共同好友165
7.6 實例2:在Tomcat上使用Redis保存Session 166
7.6.1 分佈式Session 166
7.6.2 持久化Tomcat Session到Redis 167
7.6.3 安裝服務器Tomcat和反向代理服務器Ngin 168
7.6.4 配置Tomcat集173
7.6.5 配置Tomcat使用Redis管理Session 177
8章Spring Boot與Redis整合應用179
8.1 Spring Boot項目搭建與Redis整合應用179
8.1.1 Spring Boot簡介179
8.1.2 使用Spring Initializr新建項目180
8.1.3 Spring Boot結合Redis實戰184
8.2 RedisTemplate API詳解186
8.2.1 寫入和讀取緩存186
8.2.2 添加和獲取散列數據187
8.2.3 添加和獲取列表數據188
8.2.4 添加和獲取集合數據188
8.2.5 添加和獲取有序集合數據188
8.2.6 優化控制器189
8.3 Spring Boot集成Spring Session 190
8.3.1 配置Spring Boot項目190
8.3.2 創建配置類和控制器類191
8.3.3 編譯和部署項目193
9章Redis監控196
9.1 Redis監控指標196
9.1.1 使用INFO命令196
9.1.2 使用redis-stat 206
9.2 自定義監控208
9.2.1 前端頁面210
9.2.2 WebSocket與消息推送215
9.2.3 創建控制器類220
9.2.4 業務邏輯222
9.2.5 常用工具類226
10章Redis的緩存設計與優化230
10.1 Redis緩存的優點和缺點230
10.2 緩存雪崩231
10.3 緩存穿透231
10.4 布隆過濾器232
10.4.1 布隆過濾器簡介232
10.4.2 Redis加載布隆過濾器模塊233
10.4.3 在項目中使用布隆過濾器236
11章擴展知識237
11.1 配置CentOS 7 237
11.1.1 關閉防火牆237
11.1.2 配置國內yum倉庫238
11.2 Maven基礎知識239
11.2.1 Maven的基本概念239
11.2.2 Maven下載240
11.2.3 Maven安裝241
11.2.4 修改從Maven中心倉庫下載到本地的JAR包的默認存儲位置242
11.2.5 Maven的簡單使用244
11.2.6 pom.ml文件中的groupId和artifactId到底該怎麼定義244
11.2.7 常用Maven命令244
11.3 配置IntelliJ IDEA 245
11.3.1 配置JDK 245
11.3.2 配置Maven 247
11.3.3 配置Tomcat 249
11.3.4 創建簡單的Maven項目250
11.3.5 導入Maven項目進行配置253
11.4 使用VMware 254
11.4.1 配置虛擬機的靜態IP地址254
11.4.2 恢復網絡設置255
11.4.3 重新生成虛擬機網卡的MAC地址255
11.5 配置SecureCRT 256
11.5.1 設置打開的連接顯示在一個頁面257
11.5.2 傳輸文件和下載文件257
11.5.3 顯示中文258
11.6 Chrome的常用技巧259
11.6.1 打開發者工具控制台259
11.6.2 基本輸出259
11.6.3 Chrome禁用緩存260
11.7 使用Python 3作Redis集260
11.7.1 在Windows下安裝Python 3 260
11.7.2 在Linu下安裝Python 3 266
11.7.3 使用Redis模塊267
作者介紹
王碩
十多年軟件開發經驗,架構師,項目經驗豐富,精通Java/Python/Go等,擅長雲計算,大數據和物聯網,著有《PyQt 5 快速開發與實戰》,《Python 3.* 全棧開發從入門到精通》等。