前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Redis前奏曲】初识Redis

【Redis前奏曲】初识Redis

作者头像
xxxflower
发布2023-12-29 09:55:12
1180
发布2023-12-29 09:55:12
举报
文章被收录于专栏:《数据结构》《数据结构》
文章目录
  • 一.Redis的一些特性(优点)
    • 1. 在内存中存储数据
    • 2. 可编程的
    • 3. 可扩展的
    • 4.持久化
    • 5. 聚集(集群)
    • 6. 高可用
    • Redis快的原因
  • 二. 使用案例
    • 1.数据库
    • 2. 缓存
    • 3. 消息队列

一.Redis的一些特性(优点)

我们在上一篇博客中说到,Redis是一个在内存中存储数据的中间件.用作数据库,数据缓存等方面,在分布式系统中发挥着重要的作用.那么Redis有哪些优点特性呢?

1. 在内存中存储数据

在这里插入图片描述
在这里插入图片描述

Redis在内存中存储数据.MySQL主要是通过的方式来存储组织数据的,是"关系型数据库".而Redis主要是通过键值对的方式来存储组织数据的,是"非关系型数据库". Redis中的key都是String,value则可以是string,hashes,set,sorted sets,stream...

2. 可编程的

在这里插入图片描述
在这里插入图片描述

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

3. 可扩展的

在这里插入图片描述
在这里插入图片描述

即可以在Redis原有的功能基础上再进行扩展,Redis提供了一组API. 可以通过上述C/C++,或者Rust编写Redis扩展.

4.持久化

在这里插入图片描述
在这里插入图片描述

我们知道,Redis是把数据存储在内存上的.而内存的数据是"易失"的,比如进程退出或者系统重启就会造成数据丢失.为了解决这个问题Redis会把数据存储在硬盘上,以内存为主,硬盘为辅.(硬盘相当于对内存的数据进行了备份)如果Redis重启,就会在重启时加载硬盘中的备份数据使Redis的内训恢复到重启之前的状态.

5. 聚集(集群)

在这里插入图片描述
在这里插入图片描述

Redis作为一个分布式系统中的中间件,集群是一个很重要的特性. 上述中的"水平扩展",就类似于分库分表. 一个Redis能存储的数据是有限的(内存空间是有限的),我们就可以引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分.

6. 高可用

在这里插入图片描述
在这里插入图片描述

高可用—>冗余/备份 Redis自身也是支持主从结构的,从节点就相当于主节点的备份.

Redis快的原因

  1. Redis数据在内存中,相比于访问硬盘的数据库,就要快很多.
  2. Redis核心功能都是比较简单的逻辑,核心功能都是比较简单的操作内存的数据结构.
  3. 从网络角度上来说,Redis使用的是IO多路复用(使用一个线程,管理很多个socket)的方式(epoll)
  4. Redis使用的是单线程模式,减少了不必要的线程之间的竞争开销.

二. 使用案例

1.数据库

在这里插入图片描述
在这里插入图片描述

Redis做数据库,主要解决的是快,性能好.但是使用这样的内存数据库,存储大量的数据,就需要不少的硬件资源.(此时Redis中存的是全量数据,这里的数据是不能随便丢的.)

2. 缓存

在这里插入图片描述
在这里插入图片描述

caching

使用MySQL存数据,能够存储的数据量很大,但是它很慢.所以我们可以将其中的20%的热点数据拿出来,存储在Redis中,此时Redis用来做缓存.(此时Redis中存的是部分数据,全量数据都是以mysql为主的,即使Redis中数据没有了,可以从mysql中再次读取加载)

session storage 我们在前面的博客中讲到 cookie是用来实现用户身份信息的保存的,它需要搭配 session 一起使用. cookie 只是在浏览器这边存储了一个用户的身份标识(sessionId).而服务器才真正的存储了用户数据. 而当我们的应用服务器有多个时,通过负载均衡器的分配,每一个用户的数据都有可能随机落在不同的应用服务器上,那么我们要在每一个应用服务器上都保存用户的数据吗,答案是否定的.这样一来,不仅不同的应用服务器会多次存储用户数据浪费资源,而且用户端也会不断的登录造成不好的体验.

在这里插入图片描述
在这里插入图片描述

那为了解决上述问题.我们应该怎么做呢?

  1. 让负载均衡器每一次将同一用户的请求始终分配在同一个应用服务器上.(不是采用轮询的算法,而是要通过userId之类的方式来分配机器)
  2. 将会话数据单独拿出来,放在一组独立的机器上存储(Redis)
在这里插入图片描述
在这里插入图片描述

3. 消息队列

在这里插入图片描述
在这里插入图片描述

Redis是一个使用内存存储数据的中间件,一般被作为 **内存数据库/缓存/消息队列 **来使用.

值得注意的是 Redis也是一个客户端服务器结构的程序. 它是通过网络操作内存的.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一.Redis的一些特性(优点)
    • 1. 在内存中存储数据
      • 2. 可编程的
        • 3. 可扩展的
          • 4.持久化
            • 5. 聚集(集群)
              • 6. 高可用
                • Redis快的原因
                • 二. 使用案例
                  • 1.数据库
                    • 2. 缓存
                      • 3. 消息队列
                      相关产品与服务
                      对象存储
                      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档