redis 基础篇(redis 理解)

目录

redis 特性介绍

redis 的一些特性(优点)

1. 在内存中存储数据

2. 可编程的

3. 可扩展

4. 持久化

5. 支持集群

6. 高可用

redis 的应用场景

数据库

作缓存

会话存储

作消息队列

redis 不适合做的事情

redis 介绍

redis 客户端形态

命令行

图形化界面

基于 redis 的 api 自行开发客户端

redis 特点


redis 特性介绍

redis 实际上是一个 内存中存储数据的中间件。

用于作为数据库,用于作为数据缓存。

适应于分布式操作系统。

redis 的一些特性(优点)

1. 在内存中存储数据

MySql 主要是通过表来存储数据,而 redis 主要通过键值对来存储数据,MySql 是关系型数据库,而 redis 是非关系型数据库。

redis 的 key 都是 string, value 则是一些数据结构。

value 的类型:

  • string

  • hashes

  • lists

  • sets

  • sorted

  • sets

  • streams

  • ...

上述的这些数据结构都可以用键值对类组织。

2. 可编程的

针对 redis 的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行的一些操作。

3. 可扩展

可以通过一些语言编写 redis 的扩展(本质就是一个动态链接库)

支持的语言:

  • C

  • C++

  • Rust

4. 持久化

redis 是把数据放在内存上的,但是内存上的数据是易失的,进程退出/系统重启就丢失了。

持久化的原理:

redis 会把数据也存储到硬盘上一份,但是主要是以内存为主,影片上的数据就相当于备份,如果重启就会将数据恢复到内存。

5. 支持集群

类似于分库分表,一个 redis 能存储的数据是有限的,所以就可以映入多个主机,部署多个 redis 节点,每个 redis 存储数据的一部分。

6. 高可用

高可用(备份),redis 支持“主存结构”,从节点就相当于主节点的备份。

对于 redis 的特性其实还有一个——快。

  1. redis 的数据在内存,就比访问硬盘的数据库就快。

  2. redis 的核心功能都比较简单, 核心功能就是简单操作内存中的数据结构。

  3. 从网络角度上,redis 使用了 IO 多路复用的方式(epoll)

  4. redis 使用的是单线程模型(虽然更高版本的 redis 引入了多线程),这样的单线程模型,介绍了不必要的线程竞争开销。

    redis 的应用场景

    数据库

    把 redis 当作数据库。

    大多数情况下,我们数据库优先考虑的是大,但是还是有一些场景,考虑的是“快”。

作缓存

使用 MySql 存数据,大,慢,但是我们可以把热点数据拿出来放在 redis 中。

上面的两个 redis 的应用场景下:
1.存全量数据,这里的数据是不能随便丢的。
2.作缓存 redis 里面的数据是可以丢失部分的。

会话存储

redis 可以作会话存储。

为了是实现用户身份信息的保存,我们还是需要 session 来配合,session 存储在服务器里面, cookie 只是一个用户身份的标识。

所以为了方便,就可以把会话存储到 redis 里面,每一次用户就可以快速的进行身份识别。

这样做即使应用服务器重启了,用户的身份信息不会丢失。

作消息队列

这里的消息队列是一个服务器。

但是 redis 作为消息队列并不是很完美。

RabbitMQ, Kafka, RocketMQ.....作为消息队列是很好的。

redis 不适合做的事情

redis 不适合存储大规模数据~

redis 是一个使用内存存储数据的中间件。

一般被作为 内存数据库/缓存/消息队列来使用~

redis 介绍

  1. redis 的客户端和服务器是用网络通信的

  2. redis 的客户端和服务器可以在同一台主机上,如果在同一台主机上,那么就是使用本地环回。

  3. redis 服务端不是只为了一个客户端提供服务。

  4. redis 服务器(本体)负责提供存储和管理数据。

redis 客户端形态

命令行
redis-cli -h 127.0.0.1 -p 6379

上面就是 redis 客户端的登录方式

  • -h:表示登录的主机 ip

  • -p:表示端口号 port

图形化界面

(桌面程序,web 程序)

这个一般不常用。

基于 redis 的 api 自行开发客户端

就是使用编写代码来操作 redis,这个是最常用的。

redis 特点

redis 是比较快的,但是这里的快是和 mysql 比较的。

比如现在有一个单机系统,然后要存储一些数据, redis 是通过键值对来存储的,如果现在使用 map 和 redis 来比较,那么显然是redis 是比 map 直接操作内存慢的,redis 还是要通过网络,才能操作内存。

所及 redis 还是适应于分布式。

上述场景是否要引入 redis,还是要结合实际场景来确认。

引入 redis 的缺点:

  • 慢!

优点:

  • 即使应用服务器重启也不会影响存入的数据。

未来要扩展成分布式也是使用 redis 是更佳的。

你可能感兴趣的:(redis,redis,数据库,缓存)