我们知道,Redis是一种非关系型数据库。今天小编来简单说说关系型数据库和非关系型数据库,为Redis的学习做一个指引。

概念
像Mysql、Oracle、SQL Server这些依据关系模型来创建的数据库叫做关系型数据库。
说说NoSQL中的Redis-LMLPHP
除此之外,还有一种数据库叫做非关系型数据库(NoSQL)。
关系型数据库和非关系型数据库的一个显著区别是:关系型数据库中的数据存储在磁盘上,存取效率较低,但是安全;关系型数据库中的数据是被存储在内存中的,存取效率高,但是一旦突然断电,数据就会丢失,所以不安全。

4种类型

列模型
就像关系型数据库是以一行作为一个记录,列模型数据库是以一列作为一个记录。举例:Hbase。
说说NoSQL中的Redis-LMLPHP

键值对模型(key-value)
存储的数据是一个个“键值对”。举例:Redis、MemcacheDB。
说说NoSQL中的Redis-LMLPHP

文档存储模型
以一个个文档来存储数据,跟“键值对”类似。举例:MongoDB。
说说NoSQL中的Redis-LMLPHP

图形数据模型
当实体之间的关系太过于复杂时,可以选择这个。举例:Neo4J
说说NoSQL中的Redis-LMLPHP

Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
说说NoSQL中的Redis-LMLPHP
特点
(1)数据模型为key-value。
(2)可持久化。
我们知道,非关系型数据库因为其将数据存储在内存中的性质,极易造成数据丢失。为了解决这个问题,Redis会自动将数据备份到硬盘中,当断点情况恢复后,能自动恢复数据。
(3)单线程工作模式,采用的是非阻塞I/O多路复用机制
(4)支持主从模式,所以能配置集群

(1)针对不经常变动,且如果去数据库中查询会耗时久的热数据,我们可以放入缓存,这样,下次请求响应时就会快很多。有人说,Redis是最好的缓存数据库。
(2)在大并发的情况下,如果一时间很多请求同时访问数据库,会造成数据库瘫痪,解决办法是现在Redis中操作,等业务结束后(比如秒杀的东西被抢购完了),再将数据分批次存入数据库中。

应用场景
(1)缓存热数据
(2)消息队列
(3)排行榜、计数器
(5)发布订阅

5种数据类型和使用场景
说说NoSQL中的Redis-LMLPHP

和数据库的协同工作流程

  • 读取数据时:先去redis中找,如果没有,去数据库中找,然后将结果返回并存入redis中一份
  • 写入数据时:先写入数据库,然后再同步到redis中

要注意的地方
(1)Redis和数据库双写一致性问题
(2)缓存雪崩
(3)缓存穿透
(4)redis的并发竞争问题

和Rabbitmq的比较
同样是能提供消息队列服务,两者的适用场景不同:
Redis的特点是轻量级、高并发、延迟敏感,所以适用于即时数据分析,秒杀计数器,缓存等。
Rabbitmq的特点是重量级、高并发、异步,所以适用于批量数据异步处理、并行任务串行化、高负载任务的负载均衡等。

这只是对Redis的理论性知识进行了总结,至于命令的使用等,还需日后的深化和总结。
参考博客:
https://blog.csdn.net/qq_34116402/article/details/79578187
https://blog.csdn.net/jordandandan/article/details/68946839

10-04 09:47