《Redis實戰》是2015年人民郵電出版社出版的圖書,作者是[美] 約西亞 L.卡爾森 (Josiah L. Carlson )。
基本介紹
圖書簡介,目錄,
圖書簡介
本書深入淺出地介紹了Redis的5種數據類型,並通過多個實用示例展示了Redis的用法。除此之外,書中還講述了Redis的最佳化方法以及擴展方法,是一本對於學習和使用 Redis 來說不可多得的參考書籍。
本書一共由三個部分組成。首部分對Redis進行了介紹,說明了Redis的基本使用方法、它擁有的5種數據結構以及操作這5種數據結構的命令,並講解了如何使用Redis去構建文章展示網站、cookie、購物車、網頁快取、資料庫行快取等一系列程式。第二部分對Redis命令進行了更詳細的介紹,並展示了如何使用Redis去構建更為複雜的輔助工具和應用程式,並在結尾展示了如何使用Redis去構建一個簡單的社交網站。第三部分對Redis用戶經常會遇到的一些問題進行了介紹,講解了降低Redis記憶體占用的方法、擴展Redis性能的方法以及使用Lua語言進行腳本編程的方法。
目錄
第一部分 入門
第1章 初識Redis 2
1.1 Redis簡介 3
1.1.1 Redis與其他資料庫和軟體的對比 3
1.1.2 附加特性 4
1.1.3 使用Redis的理由 5
1.2 Redis數據結構簡介 6
1.2.1 Redis中的字元串 7
1.2.2 Redis中的列表 9
1.2.3 Redis的集合 10
1.2.4 Redis的散列 11
1.2.5 Redis的有序集合 12
1.3 你好Redis 13
1.3.1 對文章進行投票 15
1.3.2 發布並獲取文章 17
1.3.3 對文章進行分組 19
1.4 尋求幫助 21
1.5 小結 21
第2章 使用Redis構建Web套用 23
2.1 登錄和cookie快取 24
2.2 使用Redis實現購物車 28
2.3 網頁快取 29
2.4 數據行快取 30
2.5 網頁分析 33
2.6 小結 34
第二部分 核心概念
第3章 Redis命令 38
3.1 字元串 39
3.2 列表 42
3.3 集合 44
3.4 散列 46
3.5 有序集合 48
3.6 發布與訂閱 52
3.7 其他命令 54
3.7.1 排序 54
3.7.2 基本的Redis事務 56
3.7.3 鍵的過期時間 58
3.8 小結 60
第4章 數據安全與性能保障 61
4.1 持久化選項 61
4.1.1 快照持久化 62
4.1.2 AOF持久化 66
4.1.3 重寫/壓縮AOF檔案 67
4.2 複製 68
4.2.1 配置Redis的配置選項 69
4.2.2 Redis複製的啟動過程 70
4.2.3 主從鏈 71
4.2.4 檢驗磁碟寫入 72
4.3 處理系統故障 73
4.3.1 驗證快照檔案和AOF檔案 74
4.3.2 更換故障主伺服器 75
4.4 Redis事務 76
4.4.1 定義用戶信息和用戶包裹 77
4.4.2 將物品放到市場上銷售 78
4.4.3 購買物品 80
4.5 非事務型流水線 82
4.6 關於性能方面的注意事項 85
4.7 小結 87
第5章 使用Redis構建支持程式 88
5.1 使用Redis來記錄日誌 88
5.1.1 最新日誌 89
5.1.2 常見日誌 90
5.2 計數器和統計數據 91
5.2.1 將計數器存儲到Redis裡面 91
5.2.2 使用Redis存儲統計數據 96
5.2.3 簡化統計數據的記錄與發現 98
5.3 查找IP所屬城市以及國家 100
5.3.1 載入位置表格 100
5.3.2 查找IP所屬城市 102
5.4 服務的發現與配置 103
5.4.1 使用Redis存儲配置信息 103
5.4.2 為每個應用程式組件分別配置一個Redis伺服器 104
5.4.3 自動Redis連線管理 106
5.5 小結 107
第6章 使用Redis構建應用程式組件 109
6.1 自動補全 109
6.1.1 自動補全最近聯繫人 110
6.1.2 通訊錄自動補全 112
6.2 分散式鎖 115
6.2.1 鎖的重要性 116
6.2.2 簡易鎖 118
6.2.3 使用Redis構建鎖 119
6.2.4 細粒度鎖 122
6.2.5 帶有逾時限制特性的鎖 124
6.3 計數信號量 126
6.3.1 構建基本的計數信號量 126
6.3.2 公平信號量 128
6.3.3 刷新信號量 131
6.3.4 消除競爭條件 132
6.4 任務佇列 133
6.4.1 先進先出佇列 133
6.4.2 延遲任務 136
6.5 訊息拉取 139
6.5.1 單接收者訊息的傳送與訂閱替代品 140
6.5.2 多接收者訊息的傳送與訂閱替代品 141
6.6 使用Redis進行檔案分發 145
6.6.1 根據地理位置聚合用戶數據 146
6.6.2 傳送日誌檔案 148
6.6.3 接收日誌檔案 149
6.6.4 處理日誌檔案 150
6.7 小結 152
第7章 基於搜尋的應用程式 153
7.1 使用Redis進行搜尋 153
7.1.1 基本搜尋原理 154
7.1.2 對搜尋結果進行排序 160
7.2 有序索引 162
7.2.1 使用有序集合對搜尋結果進行排序 162
7.2.2 使用有序集合實現非數值排序 164
7.3 廣告定向 166
7.3.1 什麼是廣告伺服器? 167
7.3.2 對廣告進行索引 167
7.3.3 執行廣告定向操作 170
7.3.4 從用戶行為中學習 174
7.4 職位搜尋 180
7.4.1 逐個查找合適的職位 180
7.4.2 以搜尋方式查找合適的職位 181
7.5 小結 182
第8章 構建簡單的社交網站 184
8.1 用戶和狀態 185
8.1.1 用戶信息 185
8.1.2 狀態訊息 186
8.2 主頁時間線 187
8.3 關注者列表和正在關注列表 188
8.4 狀態訊息的發布與刪除 191
8.5 流API 194
8.5.1 流API提供的數據 195
8.5.2 提供數據 196
8.5.3 對流訊息進行過濾 199
8.6 小結 205
第三部分 進階內容
第9章 降低記憶體占用 208
9.1 短結構 208
9.1.1 壓縮列表表示 209
9.1.2 集合的整數集合編碼 211
9.1.3 長壓縮列表和大整數集合帶來的性能問題 212
9.2 分片結構 214
9.2.1 分片式散列 215
9.2.2 分片集合 218
9.3 打包存儲二進制位和位元組 221
9.3.1 決定被存儲位置信息的格式 221
9.3.2 存儲打包後的數據 223
9.3.3 對分片字元串進行聚合計算 224
9.4 小結 226
第10章 擴展Redis 227
10.1 擴展讀性能 227
10.2 擴展寫性能和記憶體容量 230
10.2.1 處理分片配置信息 232
10.2.2 創建分片伺服器連線裝飾器 233
10.3 擴展複雜的查詢 234
10.3.1 擴展搜尋查詢量 235
10.3.2 擴展搜尋索引大小 235
10.3.3 對社交網站進行擴展 240
10.4 小結 247
第11章 Redis的Lua腳本編程 248
11.1 在不編寫C代碼的情況下添加新功能 248
11.1.1 將Lua腳本載入Redis 249
11.1.2 創建新的狀態訊息 251
11.2 使用Lua重寫鎖和信號量 254
11.2.1 使用Lua實現鎖的原因 254
11.2.2 重寫鎖實現 255
11.2.3 使用Lua實現計數信號量 257
11.3 移除WATCH/MULTI/EXEC事務 258
11.3.1 回顧群組自動補全程式 259
11.3.2 再次對物品買賣市場進行改進 261
11.4 使用Lua對列表進行分片 263
11.4.1 分片列表的構成 263
11.4.2 將元素推入分片列表 265
11.4.3 從分片裡面裡面彈出元素 266
11.4.4 對分片列表執行阻塞彈出操作 267
11.5 小結 270
附錄A 快速安裝指南 271
附錄B 其他資源和參考資料 279