初识 Redis - 分布式,内存数据存储,缓存

这篇具有很好参考价值的文章主要介绍了初识 Redis - 分布式,内存数据存储,缓存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 什么是 Redis

1.1 Redis 内存数据存储

1.2 Redis 用作数据库

1.3 Redis 用作缓存 (cache)

1.4 用作消息中间件


1. 什么是 Redis

The open source , in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.

开源的内存数据存储,被数百万开发人员用作数据库、缓存、流引擎和消息中间件

从官网得到这句话来看, Redis 它最核心的作用就是用来在内存中存储数据.

1.1 Redis 内存数据存储

【思考】这时候我们就会想, 定义变量不就是在内存中存储数据嘛, 为啥需要 redis 来存 ??

如果只是单机程序的话, 直接通过变量来存储数据的方式, 确实是更优的选择.  而 Redis 是在分布式系统中, 才能发挥出它的威力的. 而如果在分布式系统中使用变量在内存中存储数据, 那是玩不转的, 因为定义变量是在当前服务器进程的内部去存储的, 而进程之间有个东西叫 "隔离性", 也就是说进程 A 它没法直接读取进程 B 内存中的数据. 在这样的一个前提之下, 如果是一个分布式系统, 势必会涉及到多个进程, 甚至这多个进程是在不同的主机上, 那么此时, 你想直接访问其他进程内存里面的变量, 这件事情就变得困难起来了.

而 Redis 就是针对上述这样一个需求点做了一个封装, 既然我们没法直接突破进程之间进行访问, 那我们应该怎么办呢 ?

【进程间通信】

我们之前在学进程的时候, 进程里有个东西叫做进程间通信, 而进程间通信最主流的方法就是基于网络来实现, 它既可以让同一个主机之间的多个进程间通信, 它还可以跨主机, 跨不同的主机实现进程间通信.

Redis 就是基于网络, 把自己内存中的变量分享给别的进程, 甚至别的主机的进程来进行使用, 而这就是 Redis 最核心的部分.

1.2 Redis 用作数据库

谈到数据库, 我们就会自然而然的联想到 MySQL, MySQL 是目前主流的数据库之一, 它也可以在一个分布式系统中帮我们存储数据, 并且也能管理好数据; 但是MySQL它最大的问题在于, 访问速度 "比较慢"!!  有句话说的好 : "天下武功唯快不破", 尤其是现在很多互联网产品中, 对于性能要求是很高的. 

所以相比于 MySQL 来说, Redis 也可以作为数据库来使用, 它和 MySQL 相比, Redis的优点就是"快"!! 而且是快上万倍, MySQL 的数据是在硬盘中存储, 而 Redis 的数据是在内存中存储. (可以参照下表)

谷歌公司给出的各层级硬件执行速度 :

初识 Redis - 分布式,内存数据存储,缓存,redis,redis,数据库,缓存

上表是从定性的角度可以知道 Redis 比 MySQL 快很多, 具体快多少, 是很难定量衡量的. 因为 MySQL 和 Redis 支持的功能上差异很大, 如果要定量衡量, 得在相同功能, 相同应用场景中, 进行控制变量法才可以衡量. 

那既然 Redis 那么快, 为啥还要使用 MySQL 呢 ??

Redis 和 MySQL 相比,, 最大的劣势就是 "小" !! 存储空间有限. 虽然有不少的互互联网产品对于性能的要求比较高, 但是大部分的互联网产品对于性能的要求还是没那么高的.

如果性能没那么高, 同时我们又希望存储更多的数据, 用更低的成本来存, 那么相较于 Redis,  MySQL 必然是首选, 而且 MySQL 相较于 Redis 提供了更多的功能, 提供了更加丰富的增删改查能力. 

所以在 "功能" 上和 "存储空间" 上来说, MySQL 还是更胜一筹的!!

1.3 Redis 用作缓存 (cache)

【思考】既然 MySQL 它大但是速度慢, Redis 小但速度快, 那有没有一种方式, 可以做到又大又快呢??

典型的方案就是把 Redis 和 MySQL 结合起来使用, 也就是把 Redis 作为 MySQL 的 cache, 让热点数据存储在 Redis 中, 让全量数据存储在 MySQL 中, 也就是我们平时所说的 "二八原则" : 20% 的热点数据能够满足 80% 的访问需求.

这样做确实可以实现, 但是有得必有失, 这样玩带来的代价就是 :

  • 系统的复杂程度大大提升了
  • 如果数据发生修改, 还涉及到 Redis 和 MySQL 之间的数据同步问题

1.4 用作消息中间件

Redis 的初心就是用来作为一个 "消息中间件(消息队列)", 主要是为了实现分布式系统下的生产者消费者模型.

虽然 Redis 最初是想用来作为消息中间件来使用, 但是呢, 它偏偏有心栽花花不放, 无心插柳柳成荫. 随着 Redis 的发展, 他们突然发现把这个 Redis 作为一个数据库, 或者作为一个缓存好像更香, 而拿 Redis 作为一个消息中间件这件事反而非常少, 而且业界又演化出了更多更专用的一些消息中间件, 所以 Redis 它很少会被作为一个消息中间件来使用.

【总结】

       对 Redis 有了简单的了解后, 谈到 Redis, 三句话离不开一个词 - "分布式", 如果抛开分布式式系统, 那么 Redis 是没有太大的优势的, 所以要想能够更好的理解 Redis, 就得去了解一下分布式系统了, 下一篇博客来简单聊聊分布式系统.文章来源地址https://www.toymoban.com/news/detail-555045.html

到了这里,关于初识 Redis - 分布式,内存数据存储,缓存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识Redis之分布式

    一.简单介绍:         Redis是用来在 内存中 , 存储数据 的, 他的初心是用来搞\\\' 消息中间件 \\\'(或者说消息队列 很熟悉了吧~~),但是呢用的不多,他现在主要是用来做 数据库,缓存         用来存储数据, 为什么不直接存储呢?   Redis的优势就在于\\\' 分布式系统 \\\' 二.分布式系统

    2024年02月10日
    浏览(53)
  • 缓存面试解析:穿透、击穿、雪崩,一致性、分布式锁、Redis过期,海量数据查找

    在程序内部使用缓存,比如使用map等数据结构作为内部缓存,可以快速获取对象。通过将经常使用的数据存储在缓存中,可以减少对数据库的频繁访问,从而提高系统的响应速度和性能。缓存可以将数据保存在内存中,读取速度更快,能够大大缩短数据访问的时间,提升用户

    2024年02月14日
    浏览(54)
  • Redis分布式缓存

    -- 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: Redis有两种持久化方案: RDB持久化 AOF持久化        RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做 Redis数据快照 。简单来说就是把 内存中的所有数据都记录到磁盘 中。当Redis实例故障重启后,

    2024年02月12日
    浏览(51)
  • Redis 分布式缓存

    单点 Redis 的问题及解决 数据丢失:实现Redis数据持久化 并发能力:搭建主从集群,实现读写分离 存储能力:搭建分片集群,利用插槽机制实现动态扩容 故障恢复能力:利用哨兵机制,实现健康检测和自动恢复 RDB RDB全称Redis Database Backup file (Redis数据备份文件),也被叫做

    2024年02月10日
    浏览(51)
  • Redis(分布式缓存详解)

    Redis:基于内存的键值存储系统,通常用作高性能的数据库、缓存和消息队列代理,是互联网广泛应用的存储中间件 特点 :基于内存存储,读写性能高 Redis与MySQL区别 Redis以键值对形式存储,MySQL以表格形式存储 Redis存储在 内存 ,MySQL存储在 磁盘 Redis存储 高效 ,MySQL存储 安

    2024年02月16日
    浏览(47)
  • Redis高级-分布式缓存

    – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: Redis有两种持久化方案: RDB持久化 AOF持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取

    2024年04月16日
    浏览(38)
  • Redis分布式缓存方案

    数据丢失:数据持久化 并发能力弱:搭建主从集群,实现读写分离 故障恢复问题:哨兵实现健康检测,自动恢复 存储能力:搭建分片集群,利用插槽机制实现动态扩容 RDB持久化 数据库备份文件,也叫快照,把内存数据存到磁盘。使用save进行主动RDB,会阻塞所有命令。建议

    2023年04月25日
    浏览(42)
  • 缓存的变更(JVM本地缓存->Redis分布式缓存)

    在一次需求修改中,下游的服务附加提出了,针对某个业务数据缓存的生效时间的要求 原JVM设计方案: 采用jvm本地缓存机制,定时任务30秒刷新一次 现在redis方案: 因为很多地方使用了这个业务数据缓存,使用方面不能改动过多 因为是分布式部署,如果只使用jvm缓存,无法

    2024年02月11日
    浏览(48)
  • 23-MyBatis缓存、本地缓存、分布式Redis缓存、前端缓存

             MyBatis一级缓存、          MyBatis二级缓存、          本地缓存:单节点          分布式Redis缓存:多节点          前端sessionStorage缓存:会话缓存          前端localStorage缓存:前端本地缓存 MyBatis一级缓存默认是开启的。 在Spring Boot中需要添加

    2024年02月13日
    浏览(36)
  • SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】

    上一篇实现了单体应用下如何上锁,这一篇主要说明如何在分布式场景下上锁 上一篇地址:加锁 需要注意的点是: 在上锁和释放锁的过程中要保证 原子性操作 核心是上锁和解锁的过程 关于解锁使用脚本参考:SET key value [EX seconds] [PX milliseconds] [NX|XX] 3.1 一个服务按照多个端口同时

    2023年04月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包