在具有3个主节点和3个副本节点的6节点群集中。
(you可在此video中找到有关18分钟的更多详细信息)
Redis集群中的每个节点都负责一个哈希槽的子集,例如
Node A contains hash slots from 0 to 5500.
Node B contains hash slots from 5501 to 11000.
Node C contains hash slots from 11001 to 16383.
字符串
到目前为止一切顺利,但当尝试连接到redis集群并从一个键中获取值时,第一个请求将转到集群,它将返回哪个节点具有所请求的哈希槽,在第二次运行中,将从计算出的哈希槽中的键中获取值。
的数据
因此,这里有一个延迟(您可以在此video中找到有关18分钟的更多详细信息)。但是,如果我可以在内存缓存中使用节点和散列槽,就不会有此往返。
但我不知道StackExchange.Redis是如何工作的
- StackExchange.Redis是否在内部缓存节点和散列槽?
- 我必须自己写这部分吗?我在S.re上找不到任何API来查找第一次调用后的节点。
- 我是否应该计算hashslot并直接连接到包含用于优化的键的节点?
- 如何连接到redis集群?是否所有6个节点都是多路复用器?
var conn = ConnectionMultiplexer.Connect("master1,master2,master3,replica1,replica2,replica3,allowAdmin=true");
型
1条答案
按热度按时间oyt4ldly1#
您可以根据CCITT标准使用标准CRC16实现自己计算哈希槽。下面是一个C#示例:
字符串