Redis 是基于内存的,存储形式为 key-value 的非关系型数据库,它的 value 不仅包括基本的 string 类型,还有 list、set、sorted set 和 hash 类型。
Redis 其实也是一种缓存机制,缓存一般是针对查询方法的,但是也有写操作。当 Redis 启动时候,可以去 Mysql 中读数据,然后根据键把数据存放到 Redis 中。
当应用程序查找数据的时候,会先在 Redis 中查找,若找到了,则返回,若找不到,则去 Mysql 中找,找到了则把数据返回,并把该数据放到 Redis 中。
当应用程序写数据的时候,会先在 Redis 中写数据,然后 Redis 主键自增,然后队列处理器会定时去将二者进行同步,若同步失败,则可以直接插入到数据库中,然后清除缓存。
分布式是实现不同业务,而集群是实现同一功能。
分布式的每个节点都可以是集群。
通过 Redis 可以实现分布式业务的调度,也可以实现集群服务器的数据缓存。
(1)下载 Redis 的 linux 版本
(2)解压 Redis:tar zxvf redis.tar.gz
(3)进入 Redis 的解压目录:cd redis.tar.gz
(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 主要分为 5 个模块(获取商品列表、获取商品链接、获取商品图片、获取商品标题和分类、获取商品详情等),每个模块部署在不同的服务器上,同时完成不同的爬取任务,以达到分布式运行,从而提高效率。
其架构图简易如下:
解决方案(伪代码):
说明:面向微服务开发,使用 disconf 统一配置管理,用 Maven 做项目管理工具。
(1)生产任务(produce-assign-server):
(2)云存储(spider-img-server):
(3)商品价格(spider-price-server):
(4)商品详情(spider-detail-server):
(5)商品标题和类型(spider-content-server):
(6)注意事项: