Redis是什么

举报
酸菜鱼. 发表于 2022/09/11 11:40:59 2022/09/11
【摘要】 Redis是什么Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性:基于内存运行,性能高效支持分布式,理论上可以无限扩展key-value存储系统开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种...

Redis是什么
Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性:

基于内存运行,性能高效
支持分布式,理论上可以无限扩展
key-value存储系统
开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
相比于其他数据库类型,Redis具备的特点是:

C/S通讯模型
单进程单线程模型
丰富的数据类型
操作具有原子性
持久化
高并发读写
支持lua脚本
Redis的应用场景有哪些?
Redis 的应用场景包括:缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统。
Redis的数据类型及主要特性
Redis提供的数据类型主要分为5种自有类型和一种自定义类型,这5种自有类型包括:String类型、哈希类型、列表类型、集合类型和顺序集合类型。
爬虫系统设计
爬虫系统的组成部
爬虫的组件
下载任务
解析任务
检测任务
调度中心
任务队列
数据仓库
代理任务
从中可以清晰的看出整个爬虫系统 在单机的状态是如何工作的,其实整个系统看起来就是消费者和生产者的关系,所以需要一个装载任务的容器,那么这个容器要有基本的要求:断点续传,能够在项目意外暂停的时候,保存未消费的任务状态,记录已经消费的任务状态,这样当项目重启的时候,能够加载未消费的任务然后继续消费?给出两种方案:
一、通过数据库记录每一条任务的状态,比如添加一个selected字段标识这条任务是否在队列,添加status字段标识这条任务是否被消费过,一旦任务消费了,立马改变status字段状态,selected状态,这样系统突然停止的话,根据selected标识还未被消费的状态,然后把这部分数据添加到系统的任务队列之中,这样的策略虽然能够达到要求,但是不足的地方要不断的和数据库进行通信,要经受大量的写请求,那么要求数据库对表级锁的支持要必须好,性能方面不适合大规模的抓取任务。
二、通过文件存储来实现对任务状态的记录,每次任务队列中拿到的数据都会存储到一个文件中,按照文件大小做rollingFile,那么每一个新的任务加进来,都会首先被放到一个head文件,当head文件不停增长的时候,到一定大小的时候,一个新的head文件就会被加进来,同时有一个checkpoint的文件,记录任务的消费状态,难么当系统异常重启的时候,通过checkpoint文件定位到已经消费到的文件位置,然后把对应位置以后的所有任务都添加到任务队列中,达到记录任务的状态与持久化存储。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。