redis和memcached在应用中的架构:水平拆分和垂直拆分

  redis和memcached,这两个都是当今非常火的内存数据库,要论流行程度,目前redis用的最多,性能上来讲,如果你把redis的aof和rdb功能全部禁用,只是把redis当做一个缓存来用的话,redis和mencached性能上差不了多少,我相信用redis的不大可能只是用它的缓存功能吧?

这篇文章主要的目的是讲讲redis和memcached的垂直拆分和水平拆分,这里我以redis进行举例,写起来方便点。

一:垂直拆分

redis的垂直拆分实际上和mysql的垂直拆分思路差不多,我们mysql上面的垂直拆分就是分库,那么按什么分库呢?当然是按照业务分库了,订单库,商品库,用户库等等,类比到redis实际上也是一样的

redis和memcached在应用中的架构:水平拆分和垂直拆分_第1张图片

原先我们可能业务量不大,或者说数据量不大,一台redis服务器就够用了,所以我们把商品,店铺,库存,促销规则等等数据都放入了,现在用户量上来了,一台机器不够存了,那么我们可以按照业务来划分,把商品,店铺,库存单独放到一台redis服务器上来存储。

二水平拆分

redis和memcached在应用中的架构:水平拆分和垂直拆分_第2张图片

水平拆分是我们使用了垂直拆分后,某些库的数据量还是增长过快的情况下才产生的,我们也称作为数据分片,如图我们把商品数据拆分成了三片,分片的路由规则我们通常是用哈希求余和哈希环算法来解决(redis用的是哈希槽)。当然不到万不得已不要使用水平拆分,redis和memcached都不支持这种做法,我们只能引入中间件,当然现在redis3.0现在可以进行服务端集群,但是它的功能不稳定,而且如果你要扩容的话需要手动对哈希槽进行再分配,很不方便,而且jedis客户端也有bug,连上集群会卡死。


你可能感兴趣的:(redis和memcached在应用中的架构:水平拆分和垂直拆分)