NoSQL我们知道,Redis是一种非关系型数据库。今天小编来简单说说关系型数据库和非关系型数据库,为Redis的学习做一个指引。概念像Mysql、Oracle、SQL Server这些依据关系模型来创建的数据库叫做关系型数据库。除此...
NoSQL |
我们知道,Redis是一种非关系型数据库。今天小编来简单说说关系型数据库和非关系型数据库,为Redis的学习做一个指引。
概念
像Mysql、Oracle、SQL Server这些依据关系模型来创建的数据库叫做关系型数据库。
除此之外,还有一种数据库叫做非关系型数据库(NoSQL)。
关系型数据库和非关系型数据库的一个显著区别是:关系型数据库中的数据存储在磁盘上,存取效率较低,但是安全;关系型数据库中的数据是被存储在内存中的,存取效率高,但是一旦突然断电,数据就会丢失,所以不安全。
4种类型
列模型
就像关系型数据库是以一行作为一个记录,列模型数据库是以一列作为一个记录。举例:Hbase。
键值对模型(key-value)
存储的数据是一个个“键值对”。举例:Redis、MemcacheDB。
文档存储模型
以一个个文档来存储数据,跟“键值对”类似。举例:MongoDB。
图形数据模型
当实体之间的关系太过于复杂时,可以选择这个。举例:Neo4J
what? |
Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
特点
(1)数据模型为key-value。
(2)可持久化。
我们知道,非关系型数据库因为其将数据存储在内存中的性质,极易造成数据丢失。为了解决这个问题,Redis会自动将数据备份到硬盘中,当断点情况恢复后,能自动恢复数据。
(3)单线程工作模式,采用的是非阻塞I/O多路复用机制
(4)支持主从模式,所以能配置集群
why? |
(1)针对不经常变动,且如果去数据库中查询会耗时久的热数据,我们可以放入缓存,这样,下次请求响应时就会快很多。有人说,Redis是最好的缓存数据库。
(2)在大并发的情况下,如果一时间很多请求同时访问数据库,会造成数据库瘫痪,解决办法是现在Redis中操作,等业务结束后(比如秒杀的东西被抢购完了),再将数据分批次存入数据库中。
how? |
应用场景
(1)缓存热数据
(2)消息队列
(3)排行榜、计数器
(5)发布订阅
5种数据类型和使用场景
和数据库的协同工作流程
- 读取数据时:先去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
本文标题为:说说NoSQL中的Redis
基础教程推荐
- Python常见库matplotlib学习笔记之多个子图绘图 2023-07-27
- SQL Server附加数据库时出现错误的处理方法 2023-07-28
- 我是如何用2个Unix命令给MariaDB SQL提速的 2023-07-24
- Oracle如何获取数据库系统的当前时间 2023-07-23
- 【推荐】.NETCore 简单且高级的库 csredis v3.0.0 2023-09-12
- MySQL级联复制下如何进行大表的字段扩容 2023-07-26
- Redis(三):Redis数据类型 2023-09-12
- 命令行清除Redis缓存的实现 2023-07-13
- MySQL select count(*)计数很慢优化方案 2022-09-01
- Redis4.0.10配置文件----中文翻译全解析 2023-09-13