redis 基础篇(redis 理解)

目录

[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 的特性其实还有一个------快。

  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 是更佳的。

相关推荐
PGCCC13 分钟前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
jerry6094 小时前
7天用Go从零实现分布式缓存GeeCache(改进)(未完待续)
分布式·缓存·golang
锐策4 小时前
〔 MySQL 〕数据库基础
数据库·mysql
远歌已逝5 小时前
管理Oracle实例(二)
数据库·oracle
日月星宿~5 小时前
【MySQL】summary
数据库·mysql
爱吃土豆的程序员5 小时前
在oracle官网下载资源显示400 Bad Request Request Header Or Cookie Too Large 解决办法
java·数据库·oracle·cookie
睿思达DBA_WGX6 小时前
Oracle 11g rac 集群节点的修复过程
数据库·oracle
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序