# Redis 分區
分區是分割數據到多個Redis實例的處理過程,因此每個實例只保存key的一個子集。
### 分區的優勢
* 通過利用多臺計算機內存的和值,允許我們構造更大的數據庫。
* 通過多核和多臺計算機,允許我們擴展計算能力;通過多臺計算機和網絡適配器,允許我們擴展網絡帶寬。
### 分區的不足
redis的一些特性在分區方面表現的不是很好:
* 涉及多個key的操作通常是不被支持的。舉例來說,當兩個set映射到不同的redis實例上時,你就不能對這兩個set執行交集操作。
* 涉及多個key的redis事務不能使用。
* 當使用分區時,數據處理較為復雜,比如你需要處理多個rdb/aof文件,并且從多個實例和主機備份持久化文件。
* 增加或刪除容量也比較復雜。redis集群大多數支持在運行時增加、刪除節點的透明數據平衡的能力,但是類似于客戶端分區、代理等其他系統則不支持這項特性。然而,一種叫做presharding的技術對此是有幫助的。
* * *
## 分區類型
Redis 有兩種類型分區。 假設有4個Redis實例 R0,R1,R2,R3,和類似user:1,user:2這樣的表示用戶的多個key,對既定的key有多種不同方式來選擇這個key存放在哪個實例中。也就是說,有不同的系統來映射某個key到某個Redis服務。
### 范圍分區
最簡單的分區方式是按范圍分區,就是映射一定范圍的對象到特定的Redis實例。
比如,ID從0到10000的用戶會保存到實例R0,ID從10001到 20000的用戶會保存到R1,以此類推。
這種方式是可行的,并且在實際中使用,不足就是要有一個區間范圍到實例的映射表。這個表要被管理,同時還需要各 種對象的映射表,通常對Redis來說并非是好的方法。
### 哈希分區
另外一種分區方法是hash分區。這對任何key都適用,也無需是object\_name:這種形式,像下面描述的一樣簡單:
* 用一個hash函數將key轉換為一個數字,比如使用crc32 hash函數。對key foobar執行crc32(foobar)會輸出類似93024922的整數。
* 對這個整數取模,將其轉化為0-3之間的數字,就可以將這個整數映射到4個Redis實例中的一個了。93024922 % 4 = 2,就是說key foobar應該被存到R2實例中。注意:取模操作是取除的余數,通常在多種編程語言中用%操作符實現。
- PHP
- php 簡單語法
- php 語法
- PHP書寫歸范總結
- 代碼縮進
- 變量賦值時候
- if條件判斷
- 避免嵌入式賦值
- 函數和方法的注釋
- php 開發常見問題總結
- 1、查找兩個經緯度之間的距離
- 2、PHP常量詳解:define和const的區別
- 3、常見面試題及特殊情況
- mysql
- MySQL 介紹
- MySQL 及 SQL 注入
- mysql常見問題
- MySQL數據類型
- MySQL where語句
- MySQL alter 命令
- MySQL 索引
- MySQL 復制表
- MySQL 處理重復數據
- redis
- redis介紹
- redis數據類型(共5種 )
- redis常見問題及使用場景
- redis事務
- Redis 分區
- Linux
- Linux介紹
- Linux 系統目錄結構
- Linux 文件與目錄管理
- shell
- Shell 教程介紹
- html+css+js
- 優秀技術文章
- 技術鏈接
- go語言
- go開發規范及注意事項
- go簡單語法
- go開發技術總結
- 博客
- 小程序
- 1、頁面跳轉