如何通过 Redis 构建分布式缓存技术

「文末高能」

编辑 | 哈比

Redis 基础

Redis 是基于内存的,存储形式为 key-value 的非关系型数据库,它的 value 不仅包括基本的 string 类型,还有 list、set、sorted set 和 hash 类型。

Redis 其实也是一种缓存机制,缓存一般是针对查询方法的,但是也有写操作。当 Redis 启动时候,可以去 Mysql 中读数据,然后根据键把数据存放到 Redis 中。

当应用程序查找数据的时候,会先在 Redis 中查找,若找到了,则返回,若找不到,则去 Mysql 中找,找到了则把数据返回,并把该数据放到 Redis 中。

当应用程序写数据的时候,会先在 Redis 中写数据,然后 Redis 主键自增,然后队列处理器会定时去将二者进行同步,若同步失败,则可以直接插入到数据库中,然后清除缓存。

集群与分布式的区别

分布式是实现不同业务,而集群是实现同一功能。

分布式的每个节点都可以是集群。

通过 Redis 可以实现分布式业务的调度,也可以实现集群服务器的数据缓存。

轻松搭建 Redis 服务器

(1)下载 Redis 的 linux 版本

(4)Make && make install:Make

(5)启动服务端:./redis-server redis.conf

(6)启动客户端:./redis-cli

(7)测试

(8)容易出现的问题

A、系统是 mini,所以导致很多命令,例如 make、vim 等常用命令,一般会报-bash:make:command not found。

解决办法是:yum -y install gcc automake autoconf libtool make。

B、如果 cc 问题,一般是没有 gcc 环境:

解决办法是:yum -y install gcc

Redis 分布式 Demo

Redis 分布式问题,主要是将大任务化为小任务,多个计算机分布式来完成自己的任务,从而实现高效率的工作方式。

该 Demo 是以爬虫(爬取淘宝网的商品信息为例)为例,而 Redis 在此过程中起的是调度作用。

该 Demo 主要分为 5 个模块(获取商品列表、获取商品链接、获取商品图片、获取商品标题和分类、获取商品详情等),每个模块部署在不同的服务器上,同时完成不同的爬取任务,以达到分布式运行,从而提高效率。

其架构图简易如下:

解决方案(伪代码):

说明:面向微服务开发,使用 disconf 统一配置管理,用 Maven 做项目管理工具。

(1)生产任务(produce-assign-server):

图 3

图 4

(2)云存储(spider-img-server):

(3)商品价格(spider-price-server):

(4)商品详情(spider-detail-server):

(5)商品标题和类型(spider-content-server):

(6)注意事项:

去重(精准去重),若链接或标题匹配度达到 90% 以上的可以视为相同;

抓取图片数量受限;

图片栏若有视频,则可同类处理;

若任务已被领取,或已被执行,则不能再执行该任务了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180125B02W1200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券