分割超大redis数据库为例

薄荷APP的合作伙伴功能已被广泛用于在内存数据库Redis。随着数据量的快速增长,Redis的迅速扩大,并已接近12 GB的规模。所有这些数据都放置在一个单一的redis实例。一个巨大的redis实例具有以下缺点:

1。首先,你需要一个机器有一个大的内存,内存数据库Redis是。它需要把所有的需要都记在记忆里。需要安装12 GB的实例。考虑预留的增长空间,至少需要12 GB内存大小的机器。它通常需要12×1.5和18 GB的内存。另外一个考虑是使用硬盘存储数据,叉过程需要消耗的内存大小相同,所以12gb redis实例需要大约32 GB的内存是比较合适的,它提出了更高的要求的机器,往往难以满足。

2。然后,使用很容易成为性能瓶颈。Redis的并发模型是单进程单线程。它不能充分利用多核CPU。如果请求的数量是非常高的,或者当一些请求处理缓慢,如大数据的排序,它将成为系统的性能瓶颈。有一种方法可以减轻甚至这个问题,这是构建多个redis实例实现通过多个redis连接。

3,此外,一个巨大的redis实例也将增加数据管理的难度,因为如此庞大的数据量,无论是复制或备份,速度慢,容易对网络系统的影响。

因此,它将一个大的redis实例分成多个小的实例是非常必要的。

使用Redis的复制机制,Redis实例进行分割线,它将很难对系统有很大的影响。

分割的具体操作思路如下:

1、首先,计划使用分割策略,通常根据业务划分,例如,薄荷的合作伙伴3个redis实例基于业务分为时间轴,user_relationship等。规划后,我们需要修改redis程序代码中的应用根据规划结果。通常有一个统一的redis链接修改多个redis连接,和不同的业务使用不同的连接。

2,然后,通过Redis复制功能,我们创建多个redis的副本,让不同的redis连接使用不同Redis Redis复制拷贝,删除冗余数据,批量删除键的一个模式,你可以使用下面的命令:

复制代码代码如下所示:

Redis命令键xargs redis cli del|



变成一个实际的模型,例如

复制代码代码如下所示:

Redis命令键用户:*:追随者xargs redis CLI德尔|



它表示删除用户跟随数据。

最后,Redis实例通过来回切换和重启redis实例完全分离。