🚀🚀🚀本篇主要內容
在哪個服務器上寫數據:CRC16
- redis cluster在設計的時候,就考慮到了去中⼼化,去中間件,也就是説,集羣中 的每個節點都是平等的關係,都是對等的,每個節點都保存各⾃的數據和整個集 羣的狀態。每個節點都和其他所有節點連接,⽽且這些連接保持活躍,這樣就保 證了 只需要連接集羣中的任意⼀個節點,就可以獲取到其他節點的數據
- Redis集羣沒有並使⽤傳統的⼀致性哈希來分配數據,⽽是採⽤另外⼀種叫做哈希 槽 (hash slot)的⽅式來分配的。redis cluster 默認分配了 16384 個slot,當 set⼀個key 時,會⽤CRC16算法來取模得到所屬的slot,然後將這個key 分到哈 希槽區間的節點上,具體算法就是:CRC16(key) % 16384。所以 在測試的 時候看到set 和 get 的時候,直接跳轉到了7000端⼝的節點
Python交互
-
安裝包如下
pip install redis-py-cluster
- redis-py-cluster源碼地址https://github.com/Grokzen/redis-py-cluster
- 創建⽂件redis_cluster.py,示例碼如下
from rediscluster import *
if __name__ == '__main__':
try:
# 構建所有的節點,Redis會使⽤CRC16算法,將鍵和值寫到某個節點上
startup_nodes = [
{'host': '192.168.26.128', 'port': '7000'},
# 學習目標
* 能夠描述出什麼是 nosql
* 能夠説出 Redis 的特點
# nosql介紹
## NoSQL:一類新出現的數據庫(not only sql)
* 泛指非關係型的數據庫
* 不支持SQL語法
* 存儲結構跟傳統關係型數據庫中的那種關係表完全不同,nosql中存儲的數據都是KV形式
* NoSQL的世界中沒有一種通用的語言,每種nosql數據庫都有自己的api和語法,以及擅長的業務場景
* NoSQL中的產品種類相當多:
* Redis
* Mongodb
* Hbase hadoop
* Cassandra hadoop
## NoSQL和SQL數據庫的比較:
* 適用場景不同:sql數據庫適合用於關係特別複雜的數據查詢場景,nosql反之
* **事務** 特性的支持:sql對事務的支持非常完善,而nosql基本不支持事務
* 兩者在不斷地