- 任何人都知道redis复制和redis分片之间的区别?
- 它们用于什么? Redis将数据存储在内存中,这如何影响复制/分片?
- 它们可以同时使用它们吗?
回答
Sharding几乎是复制的对立面,尽管它们是正交的概念并且可以很好地协同工作。
分片(也称为分区)正在按键分割数据;而复制也称为镜像,即复制所有数据。
分片可用于提高性能,减少任何资源的命中和内存负载。复制对读取的高可用性很有用。如果您从多个副本中读取数据,则还会降低所有资源的命中率,但所有资源的内存要求保持不变。应该注意的是,尽管您可以写入从站,但复制只有主站 - >从站。所以你不能用这种方式来扩展写入。假设你有以下元组:[1:Apple],[2:Banana],[3:Cherry],[4:Durian],并且我们有两台机器A和B.对于Sharding,我们可能存储密钥机器A上2,4;和机器B上的键1,3。通过复制,我们在机器A上存储键1,2,3,4和在机器B上存储1,2,3,4。
分片通常通过执行一致的散列在钥匙上。上面的例子是用下面的哈希函数h(x){return x%2 == 0?A:B}实现的。
要结合这些概念,我们可能会复制每个分片。在上述情况下,机器A的所有数据(2,4)可以在机器C上复制,机器B的所有数据(1,3)可以在机器D上复制。
任何键 - 值存储(其中Redis只是其中一个示例)支持分片,但某些交叉键功能将不再起作用。 Redis支持开箱即用的复制。
简而言之,这两个概念之间的根本区别在于,分片用于缩放写入,而复制用于缩放读取。正如Alex已经提到的,Replication也是实现HA的解决方案之一。
是的,如果考虑如何在集群中的节点上复制碎片,它们通常都会一起使用。
关于你的第三个问题,而不是RAM刷新选项,使用Redis Append Only File(AOF)是一个更好的主意。只需很小的成本(就写入速度而言),您可以获得更多的写入可靠性。这很像mysql二进制日志。建议使用1 fsync /秒。
- 1. Redis集群和zsets
- 2. Redis复制和Redis Sentinel之间的区别
- 3. Redis中的Redis集群支持2.8.19
- 4. spring-data-redis是否支持redis集群?
- 5. socket.io-redis是否支持redis集群?
- 6. Redis复制密钥级别
- 7. Redis和kafka的区别
- 8. Kubernetes Redis集群问题
- 9. kubernetes上的Redis集群
- 10. Redis集群通过HAProxy
- 11. Ignite Vs Redis Websession集群
- 12. 应在Redis的集群
- 13. Redis的群集错误
- 14. 如何保护Redis集群?
- 15. Redis HA没有集群
- 16. Raise Redis集群授权
- 17. Redis群集 - 从站不FAILOVER
- 18. 将redis排序集复制到集
- 19. 用Django进行redis缓存的django-redis-cache和django-redis之间的区别?
- 20. 如何在Redis中一起使用复制和分片?
- 21. redis-py:StrictRedis()和Redis()之间有什么区别?
- 22. seneca redis pubsub transport和seneca redis queue之间的区别是什么?
- 23. 将数据从redis独立实例移动到redis集群
- 24. redis ZADD <keys>在Redis集群环境中是否一致?
- 25. Redis命令获取Redis集群上的所有可用密钥?
- 26. Redis复制配置
- 27. Redis复制问题
- 28. Redis复制问题
- 29. redis和datacache之间的区别?
- 30. memcache,memcached和redis之间的区别
很酷。我认为答案不仅限于redis – joetsuihk 2010-03-11 04:48:44
良好的答案(一般),但并没有真正回答问题imho :) – 2010-04-22 11:17:05
我认为这个答案提供了一个很好的回应提问者问。大大简化,但正确的解释。 +1 – 2011-12-09 04:06:08