自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis快速入門

數(shù)據(jù)庫(kù) Redis
Redis是一個(gè)開源,先進(jìn)的key-value存儲(chǔ),并用于構(gòu)建高性能,可擴(kuò)展的Web應(yīng)用程序的完美解決方案。

  Redis是一個(gè)開源,先進(jìn)的key-value存儲(chǔ),并用于構(gòu)建高性能,可擴(kuò)展的Web應(yīng)用程序的完美解決方案。

  Redis從它的許多競(jìng)爭(zhēng)繼承來(lái)的三個(gè)主要特點(diǎn):

  Redis數(shù)據(jù)庫(kù)完全在內(nèi)存中,使用磁盤僅用于持久性。

  相比許多鍵值數(shù)據(jù)存儲(chǔ),Redis擁有一套較為豐富的數(shù)據(jù)類型。

  Redis可以將數(shù)據(jù)復(fù)制到任意數(shù)量的從服務(wù)器。

  Redis 優(yōu)勢(shì)

  異常快速:Redis的速度非???,每秒能執(zhí)行約11萬(wàn)集合,每秒約81000+條記錄。

  支持豐富的數(shù)據(jù)類型:Redis支持最大多數(shù)開發(fā)人員已經(jīng)知道像列表,集合,有序集合,散列數(shù)據(jù)類型。這使得它非常容易解決各種各樣的問(wèn)題,因?yàn)槲覀冎滥男﹩?wèn)題是可以處理通過(guò)它的數(shù)據(jù)類型更好。

  操作都是原子性:所有Redis操作是原子的,這保證了如果兩個(gè)客戶端同時(shí)訪問(wèn)的Redis服務(wù)器將獲得更新后的值。

  多功能實(shí)用工具:Redis是一個(gè)多實(shí)用的工具,可以在多個(gè)用例如緩存,消息,隊(duì)列使用(Redis原生支持發(fā)布/訂閱),任何短暫的數(shù)據(jù),應(yīng)用程序,如Web應(yīng)用程序會(huì)話,網(wǎng)頁(yè)命中計(jì)數(shù)等。

  Redis - 環(huán)境

  Ubuntu上安裝Redis,打開終端,然后鍵入以下命令:

  $sudo apt-get update

  $sudo apt-get install redis-server

  這將在您的計(jì)算機(jī)上安裝Redis。

  啟動(dòng) Redis

  $redis-server

  檢查Redis是否在工作?

  $redis-cli

  這將打開一個(gè)Redis提示,如下圖所示:

  redis 127.0.0.1:6379>

  上面的提示127.0.0.1是本機(jī)的IP地址,6379為Redis服務(wù)器運(yùn)行的端口?,F(xiàn)在輸入PING命令,如下圖所示。

  redis 127.0.0.1:6379> ping

  PONG

  這說(shuō)明你已經(jīng)成功地安裝Redis在您的機(jī)器上。

  在Ubuntu上安裝Redis的桌面管理器

  在Ubuntu上安裝Redis的桌面管理器,只需從 http://redisdesktop.com/download 打開下載軟件包并安裝它。

  Redis桌面管理器會(huì)給你用戶界面來(lái)管理Redis的Key和數(shù)據(jù)。

  Redis - 數(shù)據(jù)類型

  Redis支持5種類型的數(shù)據(jù)類型,它描述如下的:

  字符串

  Redis字符串是字節(jié)序列。Redis字符串是二進(jìn)制安全的,這意味著他們有一個(gè)已知的長(zhǎng)度沒(méi)有任何特殊字符終止,所以你可以存儲(chǔ)任何東西,512兆為上限。

  例子

  redis 127.0.0.1:6379> SET name "yiibai"

  OK

  redis 127.0.0.1:6379> GET name

  "yiibai"

  上面是Redis的set和get命令的例子,Redis名稱為yiibai使用的key存儲(chǔ)在Redis的字符串值。

  哈希

  Redis的哈希是鍵值對(duì)的集合。 Redis的哈希值是字符串字段和字符串值之間的映射,因此它們被用來(lái)表示對(duì)象

  例子

  redis 127.0.0.1:6379> HMSET user:1 username yiibai password yiibai points 200

  OK

  redis 127.0.0.1:6379> HGETALL user:1

  1) "username"

  2) "yiibai"

  3) "password"

  4) "yiibai"

  5) "points"

  6) "200"

  在上面的例子中的哈希數(shù)據(jù)類型,用于存儲(chǔ)其中包含的用戶的基本信息用戶的對(duì)象。這里HMSET,HEGTALL用戶命令user:1是鍵。

  列表

  Redis的列表是簡(jiǎn)單的字符串列表,排序插入順序。您可以添加元素到Redis的列表的頭部或尾部。

  例子

 

  1. redis 127.0.0.1:6379> lpush tutoriallist redis 
  2. (integer) 1 
  3. redis 127.0.0.1:6379> lpush tutoriallist mongodb 
  4. (integer) 2 
  5. redis 127.0.0.1:6379> lpush tutoriallist rabitmq 
  6. (integer) 3 
  7. redis 127.0.0.1:6379> lrange tutoriallist 0 10 
  8.   
  9. 1) "rabitmq" 
  10. 2) "mongodb" 
  11. 3) "redis" 

 

  列表的最大長(zhǎng)度為 232 - 1 元素(4294967295,每個(gè)列表中可容納超過(guò)4十億的元素)。

  集合

  Redis的集合是字符串的無(wú)序集合。在Redis您可以添加,刪除和測(cè)試文件是否存在,在成員O(1)的時(shí)間復(fù)雜度。

  例子

 

  1. redis 127.0.0.1:6379> sadd tutoriallist redis 
  2. (integer) 1 
  3. redis 127.0.0.1:6379> sadd tutoriallist mongodb 
  4. (integer) 1 
  5. redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
  6. (integer) 1 
  7. redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
  8. (integer) 0 
  9. redis 127.0.0.1:6379> smembers tutoriallist 
  10.   
  11. 1) "rabitmq" 
  12. 2) "mongodb" 
  13. 3) "redis" 

 

  注意:在上面的例子中rabitmq集合添加加兩次,但由于集合元素具有唯一屬性。

  集合中的元素最大數(shù)量為 232 - 1 (4294967295,可容納超過(guò)4十億元素)。

  有序集合

  Redis的有序集合類似于Redis的集合,字符串不重復(fù)的集合。不同的是,一個(gè)有序集合的每個(gè)成員用分?jǐn)?shù),以便采取有序set命令,從最小的到最大的成員分?jǐn)?shù)有關(guān)。雖然成員具有唯一性,但分?jǐn)?shù)可能會(huì)重復(fù)。

  例子

 

  1. redis 127.0.0.1:6379> zadd tutoriallist 0 redis 
  2. (integer) 1 
  3. redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb 
  4. (integer) 1 
  5. redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
  6. (integer) 1 
  7. redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
  8. (integer) 0 
  9. redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000 
  10.   
  11. 1) "redis" 
  12. 2) "mongodb" 
  13. 3) "rabitmq" 
  14.   
  15. Redis - keys 

 

  Redis keys命令用于在Redis的管理鍵。Redis keys命令使用語(yǔ)法如下所示:

  語(yǔ)法

  redis 127.0.0.1:6379> COMMAND KEY_NAME

  例子

  redis 127.0.0.1:6379> SET yiibai redis

  OK

  redis 127.0.0.1:6379> DEL yiibai

  (integer) 1

  在上面的例子中DEL是命令,而yiibai是key。如果key被刪除,那么輸出該命令將是(整數(shù))1,否則它會(huì)是(整數(shù))0

  Redis - Strings

  Redis strings命令用于在Redis的管理字符串值。Redis strings命令的使用語(yǔ)法,如下所示:

  語(yǔ)法

  redis 127.0.0.1:6379> COMMAND KEY_NAME

  例子

  redis 127.0.0.1:6379> SET yiibai redis

  OK

  redis 127.0.0.1:6379> GET yiibai

  "redis"

  在上面的例子SET和GET是命令,而yiibai是key。

  Redis - 哈希

  Redis的哈希值是字符串字段和字符串值之間的映射,所以他們是代表對(duì)象的完美數(shù)據(jù)類型

  在Redis的哈希值,最多可存儲(chǔ)超過(guò)400十億字段 - 值對(duì)。

  例子

 

  1. redis 127.0.0.1:6379> HMSET yiibai name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 
  2. OK 
  3. redis 127.0.0.1:6379> HGETALL yiibai 
  4.   
  5. 1) "name" 
  6. 2) "redis tutorial" 
  7. 3) "description" 
  8. 4) "redis basic commands for caching" 
  9. 5) "likes" 
  10. 6) "20" 
  11. 7) "visitors" 
  12. 8) "23000" 

 

  在上面的例子中,已經(jīng)在哈希命名yiibai的Redis集合名為tutorials(name, description, likes, visitors)

  Redis - 列表

  Redis的列表是簡(jiǎn)單的字符串列表,排序插入順序。您可以添加Redis元素在列表頭部或列表的尾部。

  列表的最大長(zhǎng)度為 232 - 1 個(gè)元素(每個(gè)列表元素個(gè)數(shù)超過(guò)4294967295)。

  例子

 

  1. redis 127.0.0.1:6379> LPUSH tutorials redis 
  2. (integer) 1 
  3. redis 127.0.0.1:6379> LPUSH tutorials mongodb 
  4. (integer) 2 
  5. redis 127.0.0.1:6379> LPUSH tutorials mysql 
  6. (integer) 3 
  7. redis 127.0.0.1:6379> LRANGE tutorials 0 10 
  8.   
  9. 1) "mysql" 
  10. 2) "mongodb" 
  11. 3) "redis" 

 

  在上述例子中的三個(gè)值被插入在redis列表名為L(zhǎng)PUSH的命令教程。

  Redis - 集合

  Redis的集合是唯一的字符串的無(wú)序集合。集合的唯一性不允許數(shù)據(jù)的重復(fù)的鍵。

  在Redis的集合添加,刪除和測(cè)試文件是否存在成員在O(1)(常數(shù)時(shí)間不管里面包含的元素集合的數(shù)量)。集合的最大長(zhǎng)度為 232 - 1 個(gè)元素(每集合超過(guò)4294967295元素)。

  例子

 

  1. redis 127.0.0.1:6379> SADD tutorials redis 
  2. (integer) 1 
  3. redis 127.0.0.1:6379> SADD tutorials mongodb 
  4. (integer) 1 
  5. redis 127.0.0.1:6379> SADD tutorials mysql 
  6. (integer) 1 
  7. redis 127.0.0.1:6379> SADD tutorials mysql 
  8. (integer) 0 
  9. redis 127.0.0.1:6379> SMEMBERS tutorials 
  10.   
  11. 1) "mysql" 
  12. 2) "mongodb" 
  13. 3) "redis" 

 

  在上述例子中的三個(gè)值被命令SADD插入redis的集合名稱tutorials。

  Redis有序集

  Redis的有序集合類似Redis的集合存儲(chǔ)在設(shè)定值具有唯一性。不同的是,一個(gè)有序集合的每個(gè)成員用分?jǐn)?shù),以便采取有序set命令,從最小的到最大的分?jǐn)?shù)有關(guān)。

  在Redis的有序set添加,刪除和測(cè)試存在成員O(1)(固定時(shí)間,無(wú)論里面包含集合元素的數(shù)量)。列表的最大長(zhǎng)度為 232 - 1 個(gè)元素(每集合超過(guò)4294967295元素)。

  例子

 

  1. redis 127.0.0.1:6379> ZADD tutorials 1 redis 
  2. (integer) 1 
  3. redis 127.0.0.1:6379> ZADD tutorials 2 mongodb 
  4. (integer) 1 
  5. redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
  6. (integer) 1 
  7. redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
  8. (integer) 0 
  9. redis 127.0.0.1:6379> ZADD tutorials 4 mysql 
  10. (integer) 0 
  11. redis 127.0.0.1:6379> ZRANGE tutorials 0 10 WITHSCORES 
  12.   
  13. 1) "redis" 
  14. 2) "1" 
  15. 3) "mongodb" 
  16. 4) "2" 
  17. 5) "mysql" 
  18. 6) "4" 

 

  在上述例子中的三個(gè)值被命令ZADD插入其得分在redis的有序集命名為tutorials。

  Redis - HyperLogLog

  Redis的HyperLogLog使用隨機(jī)化,以提供唯一的元素?cái)?shù)目近似的集合只使用一個(gè)常數(shù),并且體積小,少量?jī)?nèi)存的算法。

  HyperLogLog提供,即使每個(gè)使用了非常少量的內(nèi)存(12千字節(jié)),標(biāo)準(zhǔn)誤差為集合的基數(shù)非常近似,沒(méi)有限制的條目數(shù),可以指定,除非接近 264個(gè)條目。

  例子

  下面的示例說(shuō)明Redis的HyperLogLog工作原理:

 

  1. redis 127.0.0.1:6379> PFADD tutorials "redis" 
  2.   
  3. 1) (integer) 1 
  4.   
  5. redis 127.0.0.1:6379> PFADD tutorials "mongodb" 
  6.   
  7. 1) (integer) 1 
  8.   
  9. redis 127.0.0.1:6379> PFADD tutorials "mysql" 
  10.   
  11. 1) (integer) 1 
  12.   
  13. redis 127.0.0.1:6379> PFCOUNT tutorials 
  14.   
  15. (integer) 3 

 

  Redis - 訂閱

  Redis的訂閱實(shí)現(xiàn)了郵件系統(tǒng),發(fā)送者(在Redis的術(shù)語(yǔ)中被稱為發(fā)布者)發(fā)送的郵件,而接收器(用戶)接收它們。由該消息傳送的鏈路被稱為通道。

  在Redis客戶端可以訂閱任何數(shù)目的通道。

  示例

  以下舉例說(shuō)明如何發(fā)布用戶的概念工作。在下面的例子給出一個(gè)客戶端訂閱一個(gè)通道名為redisChat

 

  1. redis 127.0.0.1:6379> SUBSCRIBE redisChat 
  2.   
  3. Reading messages... (press Ctrl-C to quit) 
  4. 1) "subscribe" 
  5. 2) "redisChat" 
  6. 3) (integer) 1 

 

  現(xiàn)在,兩個(gè)客戶端都發(fā)布在同一個(gè)命名通道redisChat消息,并且以上訂閱客戶端接收消息。

 

  1. redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique" 
  2.   
  3. (integer) 1 
  4.   
  5. redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by tutorials point" 
  6.   
  7. (integer) 1 
  8.   
  9.   
  10. 1) "message" 
  11. 2) "redisChat" 
  12. 3) "Redis is a great caching technique" 
  13. 1) "message" 
  14. 2) "redisChat" 
  15. 3) "Learn redis by tutorials point" 

 

  Redis - 事務(wù)

  Redis事務(wù)讓一組命令在單個(gè)步驟執(zhí)行。事務(wù)中有兩個(gè)屬性,說(shuō)明如下:

  在一個(gè)事務(wù)中的所有命令按順序執(zhí)行作為單個(gè)隔離操作。通過(guò)另一個(gè)客戶端發(fā)出的請(qǐng)求在Redis的事務(wù)的過(guò)程中執(zhí)行,這是不可能的。

  Redis的事務(wù)具有原子性。原子意味著要么所有的命令都執(zhí)行或都不執(zhí)行。

  例子

  Redis的事務(wù)由指令多重發(fā)起,然后需要傳遞在事務(wù),而且整個(gè)事務(wù)是通過(guò)執(zhí)行命令EXEC執(zhí)行命令列表。

  redis 127.0.0.1:6379> MULTI

  OK

  List of commands here

  redis 127.0.0.1:6379> EXEC

  例子

  以下舉例說(shuō)明Redis事務(wù)如何啟動(dòng)并執(zhí)行。

 

  1. redis 127.0.0.1:6379> MULTI 
  2. OK 
  3. redis 127.0.0.1:6379> SET tutorial redis 
  4. QUEUED 
  5. redis 127.0.0.1:6379> GET tutorial 
  6. QUEUED 
  7. redis 127.0.0.1:6379> INCR visitors 
  8. QUEUED 
  9. redis 127.0.0.1:6379> EXEC 
  10.   
  11. 1) OK 
  12. 2) "redis" 
  13. 3) (integer) 1 

 

  Redis - 腳本

  Redis腳本使用Lua解釋腳本用于評(píng)估計(jì)算。它內(nèi)置的Redis,從2.6.0版本開始使用腳本命令 eval。

  語(yǔ)法

  eval命令的基本語(yǔ)法如下:

  redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

  例子

  以下舉例說(shuō)明Redis腳本的工作原理:

  redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second

  1) "key1"

  2) "key2"

  3) "first"

  4) "second"

  Redis - 連接

  Redis的連接命令基本上都是用于管理與Redis的服務(wù)器客戶端連接。

  Example

  下面的例子說(shuō)明了一個(gè)客戶如何通過(guò)Redis服務(wù)器驗(yàn)證自己,并檢查服務(wù)器是否正在運(yùn)行。

  redis 127.0.0.1:6379> AUTH "password"

  OK

  redis 127.0.0.1:6379> PING

  PONG

  Redis - 備份

  Redis SAVE命令用來(lái)創(chuàng)建當(dāng)前的 Redis 數(shù)據(jù)庫(kù)備份。

  語(yǔ)法

  對(duì)Redis SAVE命令的基本語(yǔ)法如下所示:

  127.0.0.1:6379> SAVE

  例子

  下面的示例顯示了 Redis 當(dāng)前數(shù)據(jù)庫(kù)如何創(chuàng)建備份。

  127.0.0.1:6379> SAVE

  OK

  這個(gè)命令將創(chuàng)建dump.rdb文件在Redis目錄中。

  還原Redis數(shù)據(jù)

  要恢復(fù)Redis的數(shù)據(jù)只需移動(dòng) Redis 的備份文件(dump.rdb)到 Redis 目錄,然后啟動(dòng)服務(wù)器。為了得到你的 Redis 目錄,使用配置命令如下所示:

  127.0.0.1:6379> CONFIG get dir

  1) "dir"

  2) "/user/yiibai/redis-2.8.13/src"

  在上述命令的輸出在 /user/yiibai/redis-2.8.13/src 目錄,在安裝redis的服務(wù)器安裝位置。

  Bgsave

  要?jiǎng)?chuàng)建Redis的備份備用命令BGSAVE也可以。這個(gè)命令將開始執(zhí)行備份過(guò)程,并在后臺(tái)運(yùn)行。

  例子

  127.0.0.1:6379> BGSAVE

  Background saving started

  Redis - 安全

  可以Redis的數(shù)據(jù)庫(kù)更安全,所以相關(guān)的任何客戶端都需要在執(zhí)行命令之前進(jìn)行身份驗(yàn)證??蛻舳溯斎朊艽a匹配需要使用Redis設(shè)置在配置文件中的密碼。

  例子

  下面給出的例子顯示的步驟,以確保您的Redis實(shí)例安全。

  127.0.0.1:6379> CONFIG get requirepass

  1) "requirepass"

  2) ""

  默認(rèn)情況下,此屬性為空,表示沒(méi)有設(shè)置密碼,此實(shí)例。您可以通過(guò)執(zhí)行以下命令來(lái)更改這個(gè)屬性

  127.0.0.1:6379> CONFIG set requirepass "yiibai"

  OK

  127.0.0.1:6379> CONFIG get requirepass

  1) "requirepass"

  2) "yiibai"

  設(shè)置密碼,如果客戶端運(yùn)行命令沒(méi)有驗(yàn)證,會(huì)提示(錯(cuò)誤)NOAUTH,需要通過(guò)驗(yàn)證。錯(cuò)誤將返回客戶端。因此,客戶端需要使用AUTHcommand進(jìn)行認(rèn)證。

  語(yǔ)法

  AUTH命令的基本語(yǔ)法如下所示:

  127.0.0.1:6379> AUTH password

  Redis - 基準(zhǔn)

  Redis基準(zhǔn)是公用工具同時(shí)運(yùn)行Ñ命令檢查Redis的性能。

  語(yǔ)法

  redis的基準(zhǔn)的基本語(yǔ)法如下所示:

  redis-benchmark [option] [option value]

  例子

  下面給出的例子檢查redis調(diào)用100000命令。

 

  1. redis-benchmark -n 100000 
  2.   
  3. PING_INLINE: 141043.72 requests per second 
  4. PING_BULK: 142857.14 requests per second 
  5. SET: 141442.72 requests per second 
  6. GET: 145348.83 requests per second 
  7. INCR: 137362.64 requests per second 
  8. LPUSH: 145348.83 requests per second 
  9. LPOP: 146198.83 requests per second 
  10. SADD: 146198.83 requests per second 
  11. SPOP: 149253.73 requests per second 
  12. LPUSH (needed to benchmark LRANGE): 148588.42 requests per second 
  13. LRANGE_100 (first 100 elements): 58411.21 requests per second 
  14. LRANGE_300 (first 300 elements): 21195.42 requests per second 
  15. LRANGE_500 (first 450 elements): 14539.11 requests per second 
  16. LRANGE_600 (first 600 elements): 10504.20 requests per second 
  17. MSET (10 keys): 93283.58 requests per second 

 

  Redis - 客戶端連接

  Redis接受配置監(jiān)聽TCP端口和Unix套接字客戶端的連接,如果啟用。當(dāng)一個(gè)新的客戶端連接被接受以下操作進(jìn)行:

  客戶端套接字置于非阻塞狀態(tài),因?yàn)镽edis使用復(fù)用和非阻塞I/O操作。

  TCP_NODELAY選項(xiàng)設(shè)定是為了確保我們沒(méi)有在連接時(shí)延遲。

  創(chuàng)建一個(gè)可讀的文件時(shí),這樣Redis能夠盡快收集客戶端的查詢作為新的數(shù)據(jù)可供讀取的套接字。

  客戶端的最大數(shù)量

  在Redis的配置(redis.conf)屬性調(diào)用maxclients,它描述客戶端可以連接到Redis的最大數(shù)量。命令的基本語(yǔ)法是:

  config get maxclients

  1) "maxclients"

  2) "10000"

  默認(rèn)情況下,此屬性設(shè)置為10000(這取決于操作系統(tǒng)的文件描述符限制最大數(shù)量),但你可以改變這個(gè)屬性。

  例子

  在下面給出的例子中,在啟動(dòng)服務(wù)器我們?cè)O(shè)置客戶端的最大數(shù)量為10萬(wàn)。

  redis-server --maxclients 100000

  Redis - 管道傳輸

  Redis是一個(gè)TCP服務(wù)器,并支持請(qǐng)求/響應(yīng)協(xié)議。在redis一個(gè)請(qǐng)求完成下面的步驟:

  客戶端發(fā)送一個(gè)查詢到服務(wù)器,并從套接字中讀取,通常在阻塞的方式,對(duì)服務(wù)器的響應(yīng)。

  服務(wù)器處理命令并將響應(yīng)返回給客戶端。

  管道傳輸?shù)暮x

  管道的基本含義是,客戶端可以發(fā)送多個(gè)請(qǐng)求給服務(wù)器,而無(wú)需等待答復(fù)所有,并最后讀取在單個(gè)步驟中的答復(fù)。

  例子

  要檢查redis的管道,只要啟動(dòng)Redis實(shí)例,然后在終端鍵入以下命令。

  $(echo -en "PING\r\n SET tutorial redis\r\nGET tutorial\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379

  +PONG

  +OK

  redis

  :1

  :2

  :3

  在上述例子中,我們必須使用PING命令檢查Redis的連接,之后,我們已經(jīng)設(shè)定值的Redis字符串命名tutorial ,之后拿到key的值和增量訪問(wèn)量的三倍。在結(jié)果中,我們可以檢查所有的命令都一次提交給Redis,Redis是在一個(gè)步驟給出所有命令的輸出。

  管道的好處

  這種技術(shù)的好處是極大地改善協(xié)議的性能。通過(guò)管道將慢互聯(lián)網(wǎng)連接速度從5倍的連接速度提高到localhost至少達(dá)到百過(guò)倍。

  Redis - 分區(qū)

  分區(qū)是一種將數(shù)據(jù)分成多個(gè)Redis的情況下,讓每一個(gè)實(shí)例將只包含你的鍵字的子集的過(guò)程。

  分區(qū)的好處

  它允許更大的數(shù)據(jù)庫(kù),使用的多臺(tái)計(jì)算機(jī)的存儲(chǔ)器的總和。如果不分區(qū),一臺(tái)計(jì)算機(jī)的內(nèi)存可支數(shù)量有限。

  它允許以大規(guī)模的計(jì)算能力,以多個(gè)內(nèi)核和多個(gè)計(jì)算機(jī),以及網(wǎng)絡(luò)帶寬向多臺(tái)計(jì)算機(jī)和網(wǎng)絡(luò)適配器。

  分區(qū)的缺點(diǎn)

  通常不支持涉及多個(gè)鍵的操作。例如,不能兩個(gè)集合之間執(zhí)行交叉點(diǎn),因?yàn)樗鼈兇鎯?chǔ)在被映射到不同Redis實(shí)例中的鍵。

  涉及多個(gè)鍵的Redis事務(wù)不能被使用。

  分區(qū)粒度是關(guān)鍵,所以它是不可能分片數(shù)據(jù)集用一個(gè)碩大的鍵是一個(gè)非常大的有序集合。

  當(dāng)分區(qū)時(shí),數(shù)據(jù)處理比較復(fù)雜,比如要處理多個(gè)RDB/AOF文件,使數(shù)據(jù)備份需要從多個(gè)實(shí)例和主機(jī)聚集持久性文件。

  添加和刪除的能力可能很復(fù)雜。比如Redis的集群支持有添加,并在運(yùn)行時(shí)刪除節(jié)點(diǎn)不支持此功能的能力,但其他系統(tǒng),如客戶端的分區(qū)和代理的數(shù)據(jù)大多是透明的重新平衡。但是有一個(gè)叫Presharding技術(shù)有助于在這方面。

  分區(qū)的類型

  redis的提供有兩種類型的分區(qū)。假設(shè)我們有四個(gè)Redis實(shí)例R0,R1,R2,R3和代表用戶很多鍵如:user:1, user:2, ... 等等

  范圍分區(qū)

  范圍分區(qū)被映射對(duì)象轉(zhuǎn)化為具體的Redis實(shí)例的范圍內(nèi)實(shí)現(xiàn)。假定在本例中用戶ID0~I(xiàn)D10000將進(jìn)入實(shí)例R0,而用戶形成ID10001至20000號(hào)將進(jìn)入實(shí)例R1等等。

  散列分區(qū)

  在這種類型的分區(qū),一個(gè)散列函數(shù)(例如,模數(shù)函數(shù))被用于轉(zhuǎn)換鍵成數(shù)字,然后數(shù)據(jù)被存儲(chǔ)在不同redis的實(shí)例。

責(zé)任編輯:honglu 來(lái)源: 易百
相關(guān)推薦

2021-03-01 06:12:51

Redis存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)

2020-04-14 14:30:43

Redis數(shù)據(jù)庫(kù)開源

2009-09-24 15:27:41

Hibernate查詢

2021-05-07 08:02:53

Sentinel 流量服務(wù)

2010-06-24 13:35:53

GRE協(xié)議

2011-03-08 16:50:35

2011-11-29 12:27:54

2009-11-18 14:53:59

PHP Session

2011-05-16 09:15:22

SQL語(yǔ)言

2011-05-16 09:22:28

SQL語(yǔ)言

2019-11-13 15:44:17

Kafka架構(gòu)數(shù)據(jù)

2020-11-25 19:05:50

云計(jì)算SaaS公有云

2021-01-15 09:30:02

Tomcat ApacheJavaServer

2025-02-28 08:42:53

SpringNetflixHystrix

2011-06-28 17:52:49

SEO

2020-04-22 14:15:32

Vue 3.0語(yǔ)法前端

2021-03-02 06:32:03

Ansible系統(tǒng)運(yùn)維

2024-02-19 15:40:37

鴻蒙App備案阿里云

2010-05-21 12:50:45

Subversion快

2009-07-21 14:24:46

iBATIS教程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)