FlexGraphics是一套創建矢量圖形的VCL組件,支持Delphi和C++Builder開發環境。FlexGraphics Lib能夠用于創建地區圖、繪制、電子線路、原理和記憶的圖表,以及創建帶有高級說明的交互式的面板,如設備、建筑物等等。此外,在運行時,開發者還能通過ID或名字夠完全控制以及訪問所有的對象。每個對象能夠指明,用戶定義域和值以及通用或多行提示,并能夠保存在文檔體中。 本版本支持以下 IDE: Delphi 4,5,6,7,2005 C++Builder 5,6 BDS 2006 (Delphi 2006, C++Builder 2006) RAD Studio 2007 (Delphi 2007, C++Builder 2007) RAD Studio 2009 (Delphi 2009, C++Builder 2009)
標簽: FlexGraphics VCL 矢量圖形
上傳時間: 2014-01-11
上傳用戶:大三三
(1)S2S1=00時,實現模3計數,觸發器的狀態一次0→1→2→0; (2)S2S1=01時,實現模5計數,觸發器的狀態一次0→1→2→3→4→0; (3) S2S1=10時,實現模7計數,觸發器的狀態一次0→1→2→3→4→5→6→0; (4) S2S1=11時,實現模7計數,觸發器的狀態一次0→1→2→3→4→5→6→7→0
標簽: 00
上傳時間: 2014-01-04
上傳用戶:kikye
7,4漢明碼的編碼和譯碼程序,用MATLAB語言實現的
標簽:
上傳時間: 2014-01-12
上傳用戶:hebmuljb
1.RON1307系列模組簡介 ………………………………………………………………………………3 1.1.模組說明 …………………………………………………………………………………………3 1.2.性能性能 …………………………………………………………………………………………3 1.3.應用市場 …………………………………………………………………………………………3 1.4.產品圖片 …………………………………………………………………………………………3 2.RON1307系列模組電器參數 …………………………………………………………………………4 2.1.模組接線圖及引腳描述 …………………………………………………………………………4 2.2.模組電器參數 ……………………………………………………………………………………4 3.RON1307系列模組使用說明……………………………………………………………………………7 3.1.RON1307系列無線模組工作模式設置……………………………………………………………7 3.2.RON1307系列無線模組調制類型設置……………………………………………………………7 3.3.RON1307系列無線模組傳輸數據模式設置………………………………………………………7 3.4.RON1307系列無線模組功率設置…………………………………………………………………8 4.RON1307系列模組參考軟件……………………………………………………………………………9 5.RON1307無線模組常見問題……………………………………………………………………………11
上傳時間: 2015-06-11
上傳用戶:10th
收集的: 運動設備及系統 第五部分 傳輸規約 第1-4章
標簽: 電力規約
上傳時間: 2015-06-12
上傳用戶:musein
第1章 緒論 1 1.1 程序設計語言概述 1 1.1.1 機器語言 1 1.1.2 匯編語言 2 1.1.3 高級語言 2 1.1.4 C語言 3 1.2 C語言的優點和缺點 4 1.2.1 C語言的優點 4 1.2.2 C語言的缺點 6 1.3 算法概述 7 1.3.1 算法的基本特征 7 1.3.2 算法的復雜度 8 1.3.3 算法的準確性 10 1.3.4 算法的穩定性 14 第2章 復數運算 18 2.1 復數的四則運算 18 2.1.1 [算法1] 復數乘法 18 2.1.2 [算法2] 復數除法 20 2.1.3 【實例5】 復數的四則運算 22 2.2 復數的常用函數運算 23 2.2.1 [算法3] 復數的乘冪 23 2.2.2 [算法4] 復數的n次方根 25 2.2.3 [算法5] 復數指數 27 2.2.4 [算法6] 復數對數 29 2.2.5 [算法7] 復數正弦 30 2.2.6 [算法8] 復數余弦 32 2.2.7 【實例6】 復數的函數運算 34 第3章 多項式計算 37 3.1 多項式的表示方法 37 3.1.1 系數表示法 37 3.1.2 點表示法 38 3.1.3 [算法9] 系數表示轉化為點表示 38 3.1.4 [算法10] 點表示轉化為系數表示 42 3.1.5 【實例7】 系數表示法與點表示法的轉化 46 3.2 多項式運算 47 3.2.1 [算法11] 復系數多項式相乘 47 3.2.2 [算法12] 實系數多項式相乘 50 3.2.3 [算法13] 復系數多項式相除 52 3.2.4 [算法14] 實系數多項式相除 54 3.2.5 【實例8】 復系數多項式的乘除法 56 3.2.6 【實例9】 實系數多項式的乘除法 57 3.3 多項式的求值 59 3.3.1 [算法15] 一元多項式求值 59 3.3.2 [算法16] 一元多項式多組求值 60 3.3.3 [算法17] 二元多項式求值 63 3.3.4 【實例10】 一元多項式求值 65 3.3.5 【實例11】 二元多項式求值 66 第4章 矩陣計算 68 4.1 矩陣相乘 68 4.1.1 [算法18] 實矩陣相乘 68 4.1.2 [算法19] 復矩陣相乘 70 4.1.3 【實例12】 實矩陣與復矩陣的乘法 72 4.2 矩陣的秩與行列式值 73 4.2.1 [算法20] 求矩陣的秩 73 4.2.2 [算法21] 求一般矩陣的行列式值 76 4.2.3 [算法22] 求對稱正定矩陣的行列式值 80 4.2.4 【實例13】 求矩陣的秩和行列式值 82 4.3 矩陣求逆 84 4.3.1 [算法23] 求一般復矩陣的逆 84 4.3.2 [算法24] 求對稱正定矩陣的逆 90 4.3.3 [算法25] 求托伯利茲矩陣逆的Trench方法 92 4.3.4 【實例14】 驗證矩陣求逆算法 97 4.3.5 【實例15】 驗證T矩陣求逆算法 99 4.4 矩陣分解與相似變換 102 4.4.1 [算法26] 實對稱矩陣的LDL分解 102 4.4.2 [算法27] 對稱正定實矩陣的Cholesky分解 104 4.4.3 [算法28] 一般實矩陣的全選主元LU分解 107 4.4.4 [算法29] 一般實矩陣的QR分解 112 4.4.5 [算法30] 對稱實矩陣相似變換為對稱三對角陣 116 4.4.6 [算法31] 一般實矩陣相似變換為上Hessen-Burg矩陣 121 4.4.7 【實例16】 對一般實矩陣進行QR分解 126 4.4.8 【實例17】 對稱矩陣的相似變換 127 4.4.9 【實例18】 一般實矩陣相似變換 129 4.5 矩陣特征值的計算 130 4.5.1 [算法32] 求上Hessen-Burg矩陣全部特征值的QR方法 130 4.5.2 [算法33] 求對稱三對角陣的全部特征值 137 4.5.3 [算法34] 求對稱矩陣特征值的雅可比法 143 4.5.4 [算法35] 求對稱矩陣特征值的雅可比過關法 147 4.5.5 【實例19】 求上Hessen-Burg矩陣特征值 151 4.5.6 【實例20】 分別用兩種雅克比法求對稱矩陣特征值 152 第5章 線性代數方程組的求解 154 5.1 高斯消去法 154 5.1.1 [算法36] 求解復系數方程組的全選主元高斯消去法 155 5.1.2 [算法37] 求解實系數方程組的全選主元高斯消去法 160 5.1.3 [算法38] 求解復系數方程組的全選主元高斯-約當消去法 163 5.1.4 [算法39] 求解實系數方程組的全選主元高斯-約當消去法 168 5.1.5 [算法40] 求解大型稀疏系數矩陣方程組的高斯-約當消去法 171 5.1.6 [算法41] 求解三對角線方程組的追趕法 174 5.1.7 [算法42] 求解帶型方程組的方法 176 5.1.8 【實例21】 解線性實系數方程組 179 5.1.9 【實例22】 解線性復系數方程組 180 5.1.10 【實例23】 解三對角線方程組 182 5.2 矩陣分解法 184 5.2.1 [算法43] 求解對稱方程組的LDL分解法 184 5.2.2 [算法44] 求解對稱正定方程組的Cholesky分解法 186 5.2.3 [算法45] 求解線性最小二乘問題的QR分解法 188 5.2.4 【實例24】 求解對稱正定方程組 191 5.2.5 【實例25】 求解線性最小二乘問題 192 5.3 迭代方法 193 5.3.1 [算法46] 病態方程組的求解 193 5.3.2 [算法47] 雅克比迭代法 197 5.3.3 [算法48] 高斯-塞德爾迭代法 200 5.3.4 [算法49] 超松弛方法 203 5.3.5 [算法50] 求解對稱正定方程組的共軛梯度方法 205 5.3.6 [算法51] 求解托伯利茲方程組的列文遜方法 209 5.3.7 【實例26】 解病態方程組 214 5.3.8 【實例27】 用迭代法解方程組 215 5.3.9 【實例28】 求解托伯利茲方程組 217 第6章 非線性方程與方程組的求解 219 6.1 非線性方程求根的基本過程 219 6.1.1 確定非線性方程實根的初始近似值或根的所在區間 219 6.1.2 求非線性方程根的精確解 221 6.2 求非線性方程一個實根的方法 221 6.2.1 [算法52] 對分法 221 6.2.2 [算法53] 牛頓法 223 6.2.3 [算法54] 插值法 226 6.2.4 [算法55] 埃特金迭代法 229 6.2.5 【實例29】 用對分法求非線性方程組的實根 232 6.2.6 【實例30】 用牛頓法求非線性方程組的實根 233 6.2.7 【實例31】 用插值法求非線性方程組的實根 235 6.2.8 【實例32】 用埃特金迭代法求非線性方程組的實根 237 6.3 求實系數多項式方程全部根的方法 238 6.3.1 [算法56] QR方法 238 6.3.2 【實例33】 用QR方法求解多項式的全部根 240 6.4 求非線性方程組一組實根的方法 241 6.4.1 [算法57] 梯度法 241 6.4.2 [算法58] 擬牛頓法 244 6.4.3 【實例34】 用梯度法計算非線性方程組的一組實根 250 6.4.4 【實例35】 用擬牛頓法計算非線性方程組的一組實根 252 第7章 代數插值法 254 7.1 拉格朗日插值法 254 7.1.1 [算法59] 線性插值 255 7.1.2 [算法60] 二次拋物線插值 256 7.1.3 [算法61] 全區間插值 259 7.1.4 【實例36】 拉格朗日插值 262 7.2 埃爾米特插值 263 7.2.1 [算法62] 埃爾米特不等距插值 263 7.2.2 [算法63] 埃爾米特等距插值 267 7.2.3 【實例37】 埃爾米特插值法 270 7.3 埃特金逐步插值 271 7.3.1 [算法64] 埃特金不等距插值 272 7.3.2 [算法65] 埃特金等距插值 275 7.3.3 【實例38】 埃特金插值 278 7.4 光滑插值 279 7.4.1 [算法66] 光滑不等距插值 279 7.4.2 [算法67] 光滑等距插值 283 7.4.3 【實例39】 光滑插值 286 7.5 三次樣條插值 287 7.5.1 [算法68] 第一類邊界條件的三次樣條函數插值 287 7.5.2 [算法69] 第二類邊界條件的三次樣條函數插值 292 7.5.3 [算法70] 第三類邊界條件的三次樣條函數插值 296 7.5.4 【實例40】 樣條插值法 301 7.6 連分式插值 303 7.6.1 [算法71] 連分式插值 304 7.6.2 【實例41】 驗證連分式插值的函數 308 第8章 數值積分法 309 8.1 變步長求積法 310 8.1.1 [算法72] 變步長梯形求積法 310 8.1.2 [算法73] 自適應梯形求積法 313 8.1.3 [算法74] 變步長辛卜生求積法 316 8.1.4 [算法75] 變步長辛卜生二重積分方法 318 8.1.5 [算法76] 龍貝格積分 322 8.1.6 【實例42】 變步長積分法進行一重積分 325 8.1.7 【實例43】 變步長辛卜生積分法進行二重積分 326 8.2 高斯求積法 328 8.2.1 [算法77] 勒讓德-高斯求積法 328 8.2.2 [算法78] 切比雪夫求積法 331 8.2.3 [算法79] 拉蓋爾-高斯求積法 334 8.2.4 [算法80] 埃爾米特-高斯求積法 336 8.2.5 [算法81] 自適應高斯求積方法 337 8.2.6 【實例44】 有限區間高斯求積法 342 8.2.7 【實例45】 半無限區間內高斯求積法 343 8.2.8 【實例46】 無限區間內高斯求積法 345 8.3 連分式法 346 8.3.1 [算法82] 計算一重積分的連分式方法 346 8.3.2 [算法83] 計算二重積分的連分式方法 350 8.3.3 【實例47】 連分式法進行一重積分 354 8.3.4 【實例48】 連分式法進行二重積分 355 8.4 蒙特卡洛法 356 8.4.1 [算法84] 蒙特卡洛法進行一重積分 356 8.4.2 [算法85] 蒙特卡洛法進行二重積分 358 8.4.3 【實例49】 一重積分的蒙特卡洛法 360 8.4.4 【實例50】 二重積分的蒙特卡洛法 361 第9章 常微分方程(組)初值問題的求解 363 9.1 歐拉方法 364 9.1.1 [算法86] 定步長歐拉方法 364 9.1.2 [算法87] 變步長歐拉方法 366 9.1.3 [算法88] 改進的歐拉方法 370 9.1.4 【實例51】 歐拉方法求常微分方程數值解 372 9.2 龍格-庫塔方法 376 9.2.1 [算法89] 定步長龍格-庫塔方法 376 9.2.2 [算法90] 變步長龍格-庫塔方法 379 9.2.3 [算法91] 變步長基爾方法 383 9.2.4 【實例52】 龍格-庫塔方法求常微分方程的初值問題 386 9.3 線性多步法 390 9.3.1 [算法92] 阿當姆斯預報校正法 390 9.3.2 [算法93] 哈明方法 394 9.3.3 [算法94] 全區間積分的雙邊法 399 9.3.4 【實例53】 線性多步法求常微分方程組初值問題 401 第10章 擬合與逼近 405 10.1 一元多項式擬合 405 10.1.1 [算法95] 最小二乘擬合 405 10.1.2 [算法96] 最佳一致逼近的里米茲方法 412 10.1.3 【實例54】 一元多項式擬合 417 10.2 矩形區域曲面擬合 419 10.2.1 [算法97] 矩形區域最小二乘曲面擬合 419 10.2.2 【實例55】 二元多項式擬合 428 第11章 特殊函數 430 11.1 連分式級數和指數積分 430 11.1.1 [算法98] 連分式級數求值 430 11.1.2 [算法99] 指數積分 433 11.1.3 【實例56】 連分式級數求值 436 11.1.4 【實例57】 指數積分求值 438 11.2 伽馬函數 439 11.2.1 [算法100] 伽馬函數 439 11.2.2 [算法101] 貝塔函數 441 11.2.3 [算法102] 階乘 442 11.2.4 【實例58】 伽馬函數和貝塔函數求值 443 11.2.5 【實例59】 階乘求值 444 11.3 不完全伽馬函數 445 11.3.1 [算法103] 不完全伽馬函數 445 11.3.2 [算法104] 誤差函數 448 11.3.3 [算法105] 卡方分布函數 450 11.3.4 【實例60】 不完全伽馬函數求值 451 11.3.5 【實例61】 誤差函數求值 452 11.3.6 【實例62】 卡方分布函數求值 453 11.4 不完全貝塔函數 454 11.4.1 [算法106] 不完全貝塔函數 454 11.4.2 [算法107] 學生分布函數 457 11.4.3 [算法108] 累積二項式分布函數 458 11.4.4 【實例63】 不完全貝塔函數求值 459 11.5 貝塞爾函數 461 11.5.1 [算法109] 第一類整數階貝塞爾函數 461 11.5.2 [算法110] 第二類整數階貝塞爾函數 466 11.5.3 [算法111] 變型第一類整數階貝塞爾函數 469 11.5.4 [算法112] 變型第二類整數階貝塞爾函數 473 11.5.5 【實例64】 貝塞爾函數求值 476 11.5.6 【實例65】 變型貝塞爾函數求值 477 11.6 Carlson橢圓積分 479 11.6.1 [算法113] 第一類橢圓積分 479 11.6.2 [算法114] 第一類橢圓積分的退化形式 481 11.6.3 [算法115] 第二類橢圓積分 483 11.6.4 [算法116] 第三類橢圓積分 486 11.6.5 【實例66】 第一類勒讓德橢圓函數積分求值 490 11.6.6 【實例67】 第二類勒讓德橢圓函數積分求值 492 第12章 極值問題 494 12.1 一維極值求解方法 494 12.1.1 [算法117] 確定極小值點所在的區間 494 12.1.2 [算法118] 一維黃金分割搜索 499 12.1.3 [算法119] 一維Brent方法 502 12.1.4 [算法120] 使用一階導數的Brent方法 506 12.1.5 【實例68】 使用黃金分割搜索法求極值 511 12.1.6 【實例69】 使用Brent法求極值 513 12.1.7 【實例70】 使用帶導數的Brent法求極值 515 12.2 多元函數求極值 517 12.2.1 [算法121] 不需要導數的一維搜索 517 12.2.2 [算法122] 需要導數的一維搜索 519 12.2.3 [算法123] Powell方法 522 12.2.4 [算法124] 共軛梯度法 525 12.2.5 [算法125] 準牛頓法 531 12.2.6 【實例71】 驗證不使用導數的一維搜索 536 12.2.7 【實例72】 用Powell算法求極值 537 12.2.8 【實例73】 用共軛梯度法求極值 539 12.2.9 【實例74】 用準牛頓法求極值 540 12.3 單純形法 542 12.3.1 [算法126] 求無約束條件下n維極值的單純形法 542 12.3.2 [算法127] 求有約束條件下n維極值的單純形法 548 12.3.3 [算法128] 解線性規劃問題的單純形法 556 12.3.4 【實例75】 用單純形法求無約束條件下N維的極值 568 12.3.5 【實例76】 用單純形法求有約束條件下N維的極值 569 12.3.6 【實例77】 求解線性規劃問題 571 第13章 隨機數產生與統計描述 574 13.1 均勻分布隨機序列 574 13.1.1 [算法129] 產生0到1之間均勻分布的一個隨機數 574 13.1.2 [算法130] 產生0到1之間均勻分布的隨機數序列 576 13.1.3 [算法131] 產生任意區間內均勻分布的一個隨機整數 577 13.1.4 [算法132] 產生任意區間內均勻分布的隨機整數序列 578 13.1.5 【實例78】 產生0到1之間均勻分布的隨機數序列 580 13.1.6 【實例79】 產生任意區間內均勻分布的隨機整數序列 581 13.2 正態分布隨機序列 582 13.2.1 [算法133] 產生任意均值與方差的正態分布的一個隨機數 582 13.2.2 [算法134] 產生任意均值與方差的正態分布的隨機數序列 585 13.2.3 【實例80】 產生任意均值與方差的正態分布的一個隨機數 587 13.2.4 【實例81】 產生任意均值與方差的正態分布的隨機數序列 588 13.3 統計描述 589 13.3.1 [算法135] 分布的矩 589 13.3.2 [算法136] 方差相同時的t分布檢驗 591 13.3.3 [算法137] 方差不同時的t分布檢驗 594 13.3.4 [算法138] 方差的F檢驗 596 13.3.5 [算法139] 卡方檢驗 599 13.3.6 【實例82】 計算隨機樣本的矩 601 13.3.7 【實例83】 t分布檢驗 602 13.3.8 【實例84】 F分布檢驗 605 13.3.9 【實例85】 檢驗卡方檢驗的算法 607 第14章 查找 609 14.1 基本查找 609 14.1.1 [算法140] 有序數組的二分查找 609 14.1.2 [算法141] 無序數組同時查找最大和最小的元素 611 14.1.3 [算法142] 無序數組查找第M小的元素 613 14.1.4 【實例86】 基本查找 615 14.2 結構體和磁盤文件的查找 617 14.2.1 [算法143] 無序結構體數組的順序查找 617 14.2.2 [算法144] 磁盤文件中記錄的順序查找 618 14.2.3 【實例87】 結構體數組和文件中的查找 619 14.3 哈希查找 622 14.3.1 [算法145] 字符串哈希函數 622 14.3.2 [算法146] 哈希函數 626 14.3.3 [算法147] 向哈希表中插入元素 628 14.3.4 [算法148] 在哈希表中查找元素 629 14.3.5 [算法149] 在哈希表中刪除元素 631 14.3.6 【實例88】 構造哈希表并進行查找 632 第15章 排序 636 15.1 插入排序 636 15.1.1 [算法150] 直接插入排序 636 15.1.2 [算法151] 希爾排序 637 15.1.3 【實例89】 插入排序 639 15.2 交換排序 641 15.2.1 [算法152] 氣泡排序 641 15.2.2 [算法153] 快速排序 642 15.2.3 【實例90】 交換排序 644 15.3 選擇排序 646 15.3.1 [算法154] 直接選擇排序 646 15.3.2 [算法155] 堆排序 647 15.3.3 【實例91】 選擇排序 650 15.4 線性時間排序 651 15.4.1 [算法156] 計數排序 651 15.4.2 [算法157] 基數排序 653 15.4.3 【實例92】 線性時間排序 656 15.5 歸并排序 657 15.5.1 [算法158] 二路歸并排序 658 15.5.2 【實例93】 二路歸并排序 660 第16章 數學變換與濾波 662 16.1 快速傅里葉變換 662 16.1.1 [算法159] 復數據快速傅里葉變換 662 16.1.2 [算法160] 復數據快速傅里葉逆變換 666 16.1.3 [算法161] 實數據快速傅里葉變換 669 16.1.4 【實例94】 驗證傅里葉變換的函數 671 16.2 其他常用變換 674 16.2.1 [算法162] 快速沃爾什變換 674 16.2.2 [算法163] 快速哈達瑪變換 678 16.2.3 [算法164] 快速余弦變換 682 16.2.4 【實例95】 驗證沃爾什變換和哈達瑪的函數 684 16.2.5 【實例96】 驗證離散余弦變換的函數 687 16.3 平滑和濾波 688 16.3.1 [算法165] 五點三次平滑 689 16.3.2 [算法166] α-β-γ濾波 690 16.3.3 【實例97】 驗證五點三次平滑 692 16.3.4 【實例98】 驗證α-β-γ濾波算法 693
標簽: C 算法 附件 源代碼
上傳時間: 2015-06-29
上傳用戶:cbsdukaf
des加密算法及實例,加密解密組件 支持版本: Delphi 4, 5, 6, 7 and 2005,2009 and Kylix 1 and 2 開源官方站點:http://www.cityinthesky.co.uk/ 支持加密算法: Blowfish Cast 128 Cast 256 DES, 3DES Ice, Thin Ice, Ice2 IDEA Mars Misty1 RC2, RC4, RC5, RC6 Rijndael (the new AES) Serpent Tea Twofish HASH算法: Haval MD4 MD5 RipeMD-128 RipeMD-160 SHA-1 SHA-256, SHA-384, SHA-512 Tiger
上傳時間: 2016-01-19
上傳用戶:yanshf
Redis 命令參考 1 Key(鍵) 1 1.1 DEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 DUMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 EXPIRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 EXPIREAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 KEYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.7 MIGRATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.8 MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.9 OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.10 PERSIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.11 PEXPIRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.12 PEXPIREAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.13 PTTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.14 RANDOMKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.15 RENAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.16 RENAMENX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.17 RESTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.18 SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.19 TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.20 TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.21 SCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2 String(字符串) 29 2.1 APPEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2 BITCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3 BITOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4 DECR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5 DECRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.6 GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.7 GETBIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.8 GETRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.9 GETSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.10 INCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.11 INCRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.12 INCRBYFLOAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.13 MGET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.14 MSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.15 MSETNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 i 2.16 PSETEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.17 SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.18 SETBIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.19 SETEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.20 SETNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.21 SETRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.22 STRLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3 Hash(哈希表) 51 3.1 HDEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2 HEXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3 HGET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.4 HGETALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.5 HINCRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.6 HINCRBYFLOAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.7 HKEYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.8 HLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.9 HMGET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.10 HMSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.11 HSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.12 HSETNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.13 HVALS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.14 HSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4 List(列表) 61 4.1 BLPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.2 BRPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.3 BRPOPLPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4 LINDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.5 LINSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.6 LLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.7 LPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.8 LPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.9 LPUSHX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.10 LRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.11 LREM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.12 LSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.13 LTRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.14 RPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.15 RPOPLPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.16 RPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.17 RPUSHX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5 Set(集合) 79 5.1 SADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.2 SCARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.3 SDIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.4 SDIFFSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.5 SINTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.6 SINTERSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.7 SISMEMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.8 SMEMBERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.9 SMOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.10 SPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 ii 5.11 SRANDMEMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.12 SREM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.13 SUNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.14 SUNIONSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.15 SSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6 SortedSet(有序集合) 89 6.1 ZADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.2 ZCARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.3 ZCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.4 ZINCRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.5 ZRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6.6 ZRANGEBYSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 6.7 ZRANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.8 ZREM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.9 ZREMRANGEBYRANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.10 ZREMRANGEBYSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.11 ZREVRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.12 ZREVRANGEBYSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.13 ZREVRANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.14 ZSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.15 ZUNIONSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.16 ZINTERSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.17 ZSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7 Pub/Sub(發布/訂閱) 103 7.1 PSUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7.2 PUBLISH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.3 PUBSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.4 PUNSUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.5 SUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.6 UNSUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8 Transaction(事務) 109 8.1 DISCARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 8.2 EXEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 8.3 MULTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8.4 UNWATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8.5 WATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 9 Script(腳本) 113 9.1 EVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.2 EVALSHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 9.3 SCRIPT EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 9.4 SCRIPT FLUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 9.5 SCRIPT KILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 9.6 SCRIPT LOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10 Connection(連接) 123 10.1 AUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.2 ECHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.3 PING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.4 QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 10.5 SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 iii 11 Server(服務器) 127 11.1 BGREWRITEAOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.2 BGSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.3 CLIENT GETNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 11.4 CLIENT KILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 11.5 CLIENT LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 11.6 CLIENT SETNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 11.7 CONFIG GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 11.8 CONFIG RESETSTAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 11.9 CONFIG REWRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.10 CONFIG SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 11.11 DBSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 11.12 DEBUG OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 11.13 DEBUG SEGFAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 11.14 FLUSHALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 11.15 FLUSHDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 11.16 INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 11.17 LASTSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 11.18 MONITOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 11.19 PSYNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.20 SAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.21 SHUTDOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.22 SLAVEOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 11.23 SLOWLOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 11.24 SYNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 11.25 TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 12 鍵空間通知(keyspace notification) 149 12.1 功能概覽. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 12.2 事件的類型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 12.3 配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 12.4 命令產生的通知. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 12.5 過期通知的發送時間. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 13 事務(transaction) 153 13.1 用法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 13.2 事務中的錯誤. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 13.3 為什么Redis 不支持回滾(roll back) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 13.4 放棄事務. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 13.5 使用check-and-set 操作實現樂觀鎖. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 13.6 了解WATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 13.7 使用WATCH 實現ZPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 13.8 Redis 腳本和事務. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 14 發布與訂閱(pub/sub) 159 14.1 信息的格式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 14.2 訂閱模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 14.3 通過頻道和模式接收同一條信息. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 14.4 訂閱總數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 14.5 編程示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 14.6 客戶端庫實現提示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 15 復制(Replication) 163 15.1 復制功能的運作原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 15.2 部分重同步. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 iv 15.3 配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 15.4 只讀從服務器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 15.5 從服務器相關配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 15.6 主服務器只在有至少N 個從服務器的情況下,才執行寫操作. . . . . . . . . . . . . . . . . . 165 16 通信協議(protocol) 167 16.1 網絡層. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 16.2 請求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 16.3 新版統一請求協議. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 16.4 回復. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 16.5 狀態回復. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 16.6 錯誤回復. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 16.7 整數回復. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 16.8 批量回復. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 16.9 多條批量回復. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 16.10 多條批量回復中的空元素. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 16.11 多命令和流水線. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 16.12 內聯命令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 16.13 高性能Redis 協議分析器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 17 持久化(persistence) 173 17.1 Redis 持久化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 17.2 RDB 的優點. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 17.3 RDB 的缺點. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 17.4 AOF 的優點. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 17.5 AOF 的缺點. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 17.6 RDB 和AOF ,我應該用哪一個? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 17.7 RDB 快照. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 17.8 快照的運作方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 17.9 只進行追加操作的文件(append-only file,AOF) . . . . . . . . . . . . . . . . . . . . . . . . 175 17.10 AOF 重寫. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 17.11 AOF 有多耐久? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 17.12 如果AOF 文件出錯了,怎么辦? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 17.13 AOF 的運作方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 17.14 怎么從RDB 持久化切換到AOF 持久化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 17.15 RDB 和AOF 之間的相互作用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 17.16 備份Redis 數據. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 17.17 容災備份. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 18 Sentinel 181 18.1 獲取Sentinel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 18.2 啟動Sentinel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 18.3 配置Sentinel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 18.4 主觀下線和客觀下線. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 18.5 每個Sentinel 都需要定期執行的任務. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 18.6 自動發現Sentinel 和從服務器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 18.7 Sentinel API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 18.8 故障轉移. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 18.9 TILT 模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 18.10 處理-BUSY 狀態. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 18.11 Sentinel 的客戶端實現. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 19 集群教程191 19.1 集群簡介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 19.2 Redis 集群數據共享. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 v 19.3 Redis 集群中的主從復制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 19.4 Redis 集群的一致性保證(guarantee) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 19.5 創建并使用Redis 集群. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 19.6 創建集群. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 19.7 集群的客戶端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 19.8 使用redis-rb-cluster 編寫一個示例應用. . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 19.9 對集群進行重新分片. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 19.10 一個更有趣的示例應用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 19.11 故障轉移測試. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 19.12 添加新節點到集群. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 19.13 移除一個節點. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 20 Redis 集群規范205 20.1 引言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 20.2 什么是Redis 集群? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 20.3 Redis 集群實現的功能子集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 20.4 Redis 集群協議中的客戶端和服務器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 20.5 鍵分布模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 20.6 集群節點屬性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 20.7 節點握手(已實現) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 20.8 MOVED 轉向. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 20.9 集群在線重配置(live reconfiguration) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 20.10 ASK 轉向. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 20.11 容錯. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 20.12 發布/訂閱(已實現,但仍然需要改善) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 20.13 附錄A:CRC16 算法的ANSI 實現參考. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 21 關于217 22 通過捐款支持本文檔219
上傳時間: 2016-02-04
上傳用戶:1987
定義一個復數類Complex,使得下面的代碼能夠工作 Complex c1(3,5); // 用復數3+5i初始化c1 Complex c2 = 4.5; // 用實參4.5初始化c2 c1.add(c2); // 將c1與c2相加,結果保存在c1中 c1.show(); // 將c1輸出(這時結果應該是7.5+5i)
上傳時間: 2016-05-17
上傳用戶:拉梅系數
#include <iostream> #include <stdio.head> #include <stdlib.head> #include <string.head> #define ElemType int #define max 100 using namespace std; typedef struct node1 { ElemType data; struct node1 *next; }Node1,*LinkList;//鏈棧 typedef struct { ElemType *base; int top; }SqStack;//順序棧 typedef struct node2 { ElemType data; struct node2 *next; }Node2,*LinkQueue; typedef struct node22 { LinkQueue front; LinkQueue rear; }*LinkList;//鏈隊列 typedef struct { ElemType *base; int front,rear; }SqQueue;//順序隊列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 //1.采用鏈式存儲實現棧的初始化、入棧、出棧操作。 LinkList CreateStack()//創建棧 { LinkList top; top=NULL; return top; } bool StackEmpty(LinkList s)//判斷棧是否為空,0代表空 { if(s==NULL) return 0; else return 1; } LinkList Pushead(LinkList s,int x)//入棧 { LinkList q,top=s; q=(LinkList)malloc(sizeof(Node1)); q->data=x; q->next=top; top=q; return top; } LinkList Pop(LinkList s,int &e)//出棧 { if(!StackEmpty(s)) { printf("棧為空。"); } else { e=s->data; LinkList p=s; s=s->next; free(p); } return s; } void DisplayStack(LinkList s)//遍歷輸出棧中元素 { if(!StackEmpty(s)) printf("棧為空。"); else { wheadile(s!=NULL) { cout<<s->data<<" "; s=s->next; } cout<<endl; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 //2.采用順序存儲實現棧的初始化、入棧、出棧操作。 int StackEmpty(int t)//判斷棧S是否為空 { SqStack.top=t; if (SqStack.top==0) return 0; else return 1; } int InitStack() { SqStack.top=0; return SqStack.top; } int pushead(int t,int e) { SqStack.top=t; SqStack.base[++SqStack.top]=e; return SqStack.top; } int pop(int t,int *e)//出棧 { SqStack.top=t; if(!StackEmpty(SqStack.top)) { printf("棧為空."); return SqStack.top; } *e=SqStack.base[s.top]; SqStack.top--; return SqStack.top; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 //3.采用鏈式存儲實現隊列的初始化、入隊、出隊操作。 LinkList InitQueue()//創建 { LinkList head; head->rear=(LinkQueue)malloc(sizeof(Node)); head->front=head->rear; head->front->next=NULL; return head; } void deleteEle(LinkList head,int &e)//出隊 { LinkQueue p; p=head->front->next; e=p->data; head->front->next=p->next; if(head->rear==p) head->rear=head->front; free(p); } void EnQueue(LinkList head,int e)//入隊 { LinkQueue p=(LinkQueue)malloc(sizeof(Node)); p->data=e; p->next=NULL; head->rear->next=p; head->rear=p; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //4.采用順序存儲實現循環隊列的初始化、入隊、出隊操作。 bool InitQueue(SqQueue &head)//創建隊列 { head.data=(int *)malloc(sizeof(int)); head.front=head.rear=0; return 1; } bool EnQueue(SqQueue &head,int e)//入隊 { if((head.rear+1)%MAXQSIZE==head.front) { printf("隊列已滿\n"); return 0; } head.data[head.rear]=e; head.rear=(head.rear+1)%MAXQSIZE; return 1; } int QueueLengthead(SqQueue &head)//返回隊列長度 { return (head.rear-head.front+MAXQSIZE)%MAXQSIZE; } bool deleteEle(SqQueue &head,int &e)//出隊 { if(head.front==head.rear) { cout<<"隊列為空!"<<endl; return 0; } e=head.data[head.front]; head.front=(head.front+1)%MAXQSIZE; return 1; } int gethead(SqQueue head)//得到隊列頭元素 { return head.data[head.front]; } int QueueEmpty(SqQueue head)//判斷隊列是否為空 { if (head.front==head.rear) return 1; else return 0; } void travelQueue(SqQueue head)//遍歷輸出 { wheadile(head.front!=head.rear) { printf("%d ",head.data[head.front]); head.front=(head.front+1)%MAXQSIZE; } cout<<endl; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 //5.在主函數中設計一個簡單的菜單,分別測試上述算法。 int main() { LinkList top=CreateStack(); int x; wheadile(scanf("%d",&x)!=-1) { top=Pushead(top,x); } int e; wheadile(StackEmpty(top)) { top=Pop(top,e); printf("%d ",e); }//以上是鏈棧的測試 int top=InitStack(); int x; wheadile(cin>>x) top=pushead(top,x); int e; wheadile(StackEmpty(top)) { top=pop(top,&e); printf("%d ",e); }//以上是順序棧的測試 LinkList Q; Q=InitQueue(); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q,x); } int e; wheadile(Q) { deleteEle(Q,e); printf("%d ",e); }//以上是鏈隊列的測試 SqQueue Q1; InitQueue(Q1); int x; wheadile(scanf("%d",&x)!=-1) { EnQueue(Q1,x); } int e; wheadile(QueueEmpty(Q1)) { deleteEle(Q1,e); printf("%d ",e); } return 0; }
上傳時間: 2018-05-09
上傳用戶:123456..