从Redis分区的优缺点来看适合的应用场景(2)
尽管数据分区对于Redis来说无论是数据持久化存储还是缓存,在概念上都是一样的,然而对于数据持久化存储还是有一个很大的限制.当我们使用Redis来作为持久化存储的时候,每一个key必须一直被映射到同一个Redis实例.而当Redis被当做缓存使用的时候,对于这个key,如果一个实例不能用了,这个key还可以被映射到其他的实例中. Consistent hashing实现通常使得当一个key被映射到的实例不能用的时候将这个key映射到其他实例成为可能.类似,如果增加了一台机器,一部分的key将会被映射到这台新的机器上,我们需要了解的两点如下:
六、Pre-Sharding通过上面的介绍,我们知道Redis分区应用起来是有问题的,除非我们只是使用Redis当做缓存,否则对于增加机器或删除机器是非常麻烦的. 然而,通常我们Redis容量变动在实际应用中是非常常见的,比如今天我需要10台Redis机器,明天可能就需要50台机器了. 鉴于Redis是很轻量级的服务(每个实例仅仅占用1M),对于上面的问题一种简单的解决办法是: 我们可以开启多个Redis实例,尽管是一台物理机器,我们在刚开始的时候也可以开启多个实例.我们可以从中选择一些实例,比如32或64个实例来作为我们的工作集群.当一台物理机器存储不够的时候,我们可以将一般的实例移动到我们的第二台物理机上,依次类对,我们可以保证集群中Redis的实例数不变,又可以达到扩充机器的目的. 怎么移动Redis实例呢?当需要将Redis实例移动到独立的机器上的时候,我们可以通过下面步骤实现:
七、总结这篇文章在理解Redis分区概念的基础之上又介绍了Redis分区常见的几种实现方式及原理,最后根据实现中遇到的问题引入了Pre-Sharding解决方案. 参考文献《Redis官方文档》 文/陆晨 原文出处——http://my.oschina.net/andylucc技术博客 (编辑:ASP站长网) |