设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

从Redis分区的优缺点来看适合的应用场景(2)

发布时间:2021-01-04 21:30 所属栏目:53 来源:网络整理
导读:尽管数据分区对于Redis来说无论是数据持久化存储还是缓存,在概念上都是一样的,然而对于数据持久化存储还是有一个很大的限制.当我们使用Redis来作为持久化存储的时候,每一个key必须一直被映射到同一个Redis实例.而当

尽管数据分区对于Redis来说无论是数据持久化存储还是缓存,在概念上都是一样的,然而对于数据持久化存储还是有一个很大的限制.当我们使用Redis来作为持久化存储的时候,每一个key必须一直被映射到同一个Redis实例.而当Redis被当做缓存使用的时候,对于这个key,如果一个实例不能用了,这个key还可以被映射到其他的实例中.

Consistent hashing实现通常使得当一个key被映射到的实例不能用的时候将这个key映射到其他实例成为可能.类似,如果增加了一台机器,一部分的key将会被映射到这台新的机器上,我们需要了解的两点如下:

  1. 如果Redis被用来当做缓存,且要求容易增加或删除机器,使用consistent hashing是非常简单的.
  2. 如果Redis被用来当做(持久)存储,一个固定的key到实例的映射是需要的,因此我们不能够再灵活的添加或删除机器.否则,我们需要在增加或删除机器的时候系统能够rebalace,当前Redis Cluster已经支持.

六、Pre-Sharding

通过上面的介绍,我们知道Redis分区应用起来是有问题的,除非我们只是使用Redis当做缓存,否则对于增加机器或删除机器是非常麻烦的.

然而,通常我们Redis容量变动在实际应用中是非常常见的,比如今天我需要10台Redis机器,明天可能就需要50台机器了.

鉴于Redis是很轻量级的服务(每个实例仅仅占用1M),对于上面的问题一种简单的解决办法是:

我们可以开启多个Redis实例,尽管是一台物理机器,我们在刚开始的时候也可以开启多个实例.我们可以从中选择一些实例,比如32或64个实例来作为我们的工作集群.当一台物理机器存储不够的时候,我们可以将一般的实例移动到我们的第二台物理机上,依次类对,我们可以保证集群中Redis的实例数不变,又可以达到扩充机器的目的.

怎么移动Redis实例呢?当需要将Redis实例移动到独立的机器上的时候,我们可以通过下面步骤实现:

  1. 在新的物理机上启动一个新的Redis实例.
  2. 将新的物理机作为要移动的那台的slave机器.
  3. 停止客户端.
  4. 更新将要被移动的那台Redis实例的IP地址.
  5. 对于slave机器发送SLAVEOF ON ONE命令.
  6. 使用新的IP启动Redis客户端.
  7. 关闭不再使用的那个Redis实例.

七、总结

这篇文章在理解Redis分区概念的基础之上又介绍了Redis分区常见的几种实现方式及原理,最后根据实现中遇到的问题引入了Pre-Sharding解决方案.

参考文献

《Redis官方文档》

文/陆晨

原文出处——http://my.oschina.net/andylucc技术博客

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读