Redis的特性和应用场景

目录

Redis的特性

内存存储数据

可编程性

可扩展性

持久化

水平扩展性

高可用性

为什么redis是快的

Redis的应用场景

数据库

缓存和会话存储

消息队列

redis是一个客户端服务器结构的程序


Redis是一个在内存中存储数据的中间件,能够用于作为数据库,数据缓存等,能在分布式系统中大展拳脚.

Redis的特性

关于redis的特性,在redis官网中给出了六个.

内存存储数据

在内存中存储数据.

Mysql主要通过表的方式来存储和组织数据,是关系型数据库.

Redis则是主要通过键值对的方式来存储和组织数据,是一个非关系型数据库.

key是string类型,value可以是上述类型.

可编程性

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

可扩展性

可以在redis原有的功能基础上进行扩展,redis提供了一组api.可以通过c,c++和rust编写redis扩展.

比如redis自身已经提供了很多的数据结构和命令,通过扩展,让redis支持更多的数据结构和命令.

持久化

redis是把数据存储在内存上的,而内存的数据是易失的,进程退出和系统重启都会造成内存数据的丢失.所以redis也会把数据存储在硬盘上.内存为主,硬盘为辅.硬盘相当于对内存的数据备份了一下,如果redis重启了,就会在重启时加载硬盘中的备份数据,使redis的内存恢复到重启之前的状态.

水平扩展性

redis作为一个分布式系统的中间件,能够支持集群是非常关键的,这个水平扩展就类似于"分库分表".一个redis能存储的数据是有限的(内存空间有限),引入多个主机,部署多个redis节点,每个redis存储数据的一部分.

高可用性

redis自身也是支持主从结构的,从节点就相当于是主节点的备份了.具有自动故障转移机制,主节点挂了,从节点能够随时上来顶替主节点.


为什么redis是快的

快是redis的一个极其重要的优势,那redis为什么是快的?

1.redis数据存储在内存中,访问内存是比访问硬盘要快的.

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

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

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

5.redis是使用c语言开发的,相对于其他编程语言来说,速度快一些.


Redis的应用场景

数据库

大多数情况下,考虑到数据存储,优先考虑到的是空间要大,但是仍有一些场景,优先考虑的的快.

当然使用这样的内存数据库存储大量的数据,需要更高配置的内存硬件.

redis当作数据库使用的时候,存的是全量数据,这里的数据是不能随便删除的.

缓存和会话存储

使用mysql存储数据虽然大了,但是速度慢.因此我们可以把热点数据单独拿出来,放到redis中存储.

作为缓存,redis存的是部分数据,哪怕redis中的数据丢失了,还可以从mysql那里加载回来.

作为会话存储,之前我们的会话是存储在应用服务器上的,一旦服务器重启,会话就没了.要想实现会话的持久化存储,我们可以把会话存储到redis中.

消息队列

redis作为消息队列,可以实现一个网络版本的生产者消费者模型.对于分布式系统来说,服务器和服务器之间有时候也需要用到生产者消费者模型.(解耦,削峰填谷)

如果当前场景中,对于消息队列的功能依赖不是很多,并且不想引入其他依赖,此时redis可以作为一个选择.


redis是一个客户端服务器结构的程序

redis的客户端和服务器可以在同一个主机上,也可以在不同的主机上.

reids的客户端有多种形态:自带的命令行客户端,图形化界面的客户端和基于redis的api自行开发的客户端.

相关推荐
虹科网络安全12 分钟前
Search on Flex:用分层存储承载更大规模的 Redis 搜索索引
经验分享·redis·艾体宝·艾体宝it
数据库急诊室_阿哲13 分钟前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋1 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子2 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T3 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡3 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Aloudata3 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Decay__3 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
zhanghaha13144 小时前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
韩曙亮4 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录