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、报错缘由blog
WARN CROSSSLOT Keys in request don't hash to the same slot
报错如上图所示,意思是“没法将请求中的CROSS SLOT密匙哈希写入同一槽中”接口
首先咱们简单理解一下,Key咱们称为密匙,咱们要对两个不一样的密匙进行操做不只要求两个密匙位于相同的节点上,还要求位于相同的哈希槽中,报错的缘由就是由于两个密匙不位于相同的哈希槽中,解决办法见下面👇ip
4、简单理解Redis Cluster读写过程文档
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 }