1、 文檔介紹python
今日在項目裏寫了一份簡單的redis兩個set類型求並集的操做redis
不斷報錯,在網上查到的資料裏都簡單介紹了自帶的API接口,可是這個並非全部時間都好用的,甚至能夠說對分佈式而非主機redis來說基本上都是很差用的分佈式
2、網傳解決辦法spa
個人代碼調試
func ListUnion2() ([]string, error){ res, err := redisClient.SUnion(DB_SET, List_Only_Dump).Result() DBIgnoreRedisNil(err) return res, err }
3、報錯緣由code
WARN CROSSSLOT Keys in request don't hash to the same slot
報錯如上圖所示,意思是「沒法將請求中的CROSS SLOT密匙哈希寫入同一槽中」blog
首先咱們簡單理解一下,Key咱們稱爲密匙,咱們要對兩個不一樣的密匙進行操做不只要求兩個密匙位於相同的節點上,還要求位於相同的哈希槽中,報錯的緣由就是由於兩個密匙不位於相同的哈希槽中,解決辦法見下面👇接口
4、簡單理解Redis Cluster讀寫過程ip
func ListUnion() ([]string, error){ redisClient.Del(Union_List) res := []string{} dbList, err := redisClient.SMembers(DB_SET).Result() if err != nil{ return res, err } onlyDumpList, err := redisClient.SMembers(List_Only_Dump).Result() if err != nil{ return res, err } for _, dbName := range dbList{ _, err := redisClient.SAdd(Union_List, dbName).Result() if err != nil{ return res, err } } for _, dbName := range onlyDumpList{ _, err := redisClient.SAdd(Union_List, dbName).Result() if err != nil{ return res, err } } res, err = redisClient.SMembers(Union_List).Result() return res, err }