目录
[redis 特性介绍](#redis 特性介绍)
[redis 的一些特性(优点)](#redis 的一些特性(优点))
[1. 在内存中存储数据](#1. 在内存中存储数据)
[2. 可编程的](#2. 可编程的)
[3. 可扩展](#3. 可扩展)
[4. 持久化](#4. 持久化)
[5. 支持集群](#5. 支持集群)
[6. 高可用](#6. 高可用)
[redis 的应用场景](#redis 的应用场景)
[redis 不适合做的事情](#redis 不适合做的事情)
[redis 介绍](#redis 介绍)
[redis 客户端形态](#redis 客户端形态)
[基于 redis 的 api 自行开发客户端](#基于 redis 的 api 自行开发客户端)
[redis 特点](#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 的特性其实还有一个------快。
-
redis 的数据在内存,就比访问硬盘的数据库就快。
-
redis 的核心功能都比较简单, 核心功能就是简单操作内存中的数据结构。
-
从网络角度上,redis 使用了 IO 多路复用的方式(epoll)
-
redis 使用的是单线程模型(虽然更高版本的 redis 引入了多线程),这样的单线程模型,介绍了不必要的线程竞争开销。
redis 的应用场景
数据库
把 redis 当作数据库。
大多数情况下,我们数据库优先考虑的是大,但是还是有一些场景,考虑的是"快"。
作缓存
使用 MySql 存数据,大,慢,但是我们可以把热点数据拿出来放在 redis 中。
上面的两个 redis 的应用场景下:
1.存全量数据,这里的数据是不能随便丢的。
2.作缓存 redis 里面的数据是可以丢失部分的。
会话存储
redis 可以作会话存储。
为了是实现用户身份信息的保存,我们还是需要 session 来配合,session 存储在服务器里面, cookie 只是一个用户身份的标识。
所以为了方便,就可以把会话存储到 redis 里面,每一次用户就可以快速的进行身份识别。
这样做即使应用服务器重启了,用户的身份信息不会丢失。
作消息队列
这里的消息队列是一个服务器。
但是 redis 作为消息队列并不是很完美。
RabbitMQ, Kafka, RocketMQ.....作为消息队列是很好的。
redis 不适合做的事情
redis 不适合存储大规模数据~
redis 是一个使用内存存储数据的中间件。
一般被作为 内存数据库/缓存/消息队列来使用~
redis 介绍
-
redis 的客户端和服务器是用网络通信的
-
redis 的客户端和服务器可以在同一台主机上,如果在同一台主机上,那么就是使用本地环回。
-
redis 服务端不是只为了一个客户端提供服务。
-
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 是更佳的。