Redis开篇-了解Redis

深入了解Redis 本文将主要从Redis适用范围,与Memcached, Java容器对比,核心功能(Pipelining,Pub/Sub,LRU,Transactions, Persistence, Replication),分布式架构设计,Cluster,内部实现及数据结构来深入了解Redis,适用于已经了解并有Redis操作经验之程序员。 阅读详情

一、序言

    要开始学习Redis就有必要对其有个大致的了解。作为本栏目的第一节,首先说一下?Redis是干什么的?有什么用?对我们的项目有什么用。希望这篇文章可以帮助大家对Redis有个更深层次的了解。我们后续的课程将为大家讲解Redis配置文件、Redis的工作原理、Redis持久化原理、Redis事务、Redis锁机制、Redis种种功能机器应用场景的讲解等,希望大家可以支持我,关注我一下,肯定不会让大家失望的。

二、Redis是干什么的,有什么用

   相信小伙伴们在做项目的过程中一直听大神们在说使用Redis,我也是如此,大家也一定想尽快精通此技术,毕竟这是成为大神的必不可少的一部分,所以才写了这个栏目,然后带领大家一起实现小伙伴们的梦想。好了不扯了,回归正题。

   Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。其value支持多种类型,比如:string、list、set、zset、hash等。些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的,其为了保证效率,数据都是保存到了缓存中,所以我们使用一些比较常用的不易发生变化的变量,最好将其保存到redis中,没必要从mysql等关系型数据库中存取,我们也都知道存取效率在项目中是占很大的比重的,我们项目的性能好坏和数据的存取是直接的关系,另外从内存中的存取的速度(数十GB/s)远远超过硬盘中存取速度(数十MB/s~数百MB/s)的。

   Redis还支持主从同步。数据可以实现从主服务器(master)向任意的从服务器(slave)上同步。我们还可以使用Redis做集群实现分布式操作,远远减轻服务器的内存压力。既然redis的存取速度这么好,为什么我们不直接使用redis代替mysql等关系型数据库呢?理论上是可以的,只要你的内存足够大,但是我们都知道内存是很稀缺的,我们平常使用的服务器一般是4G、8G、16G、32G等的,随着内存的容量越大价格却是直线上升,这是一个小公司负担不起的,有人说我们可以使用十台8G的服务器做集群来实现一台80G内存啊,显然是不太现实的,毕竟Redis不可能将这8G的内存全部占用,内存中还加载了其他的内容,并且随着我们的项目系统上线,用户使用量上升,数据量也是直线上升,我们总不能什么时候感觉内存不够用了就再买一台服务器吧,显然这是不太现实的,项目是要求稳定性和安全性,也不会让太多的人去维护一个已经成功上线的项目。所以我们就老实的使用mysql等关系性数据库来存储数据吧。  

    Redis和memcached一样都是基于缓存的,但是我们的Redis却可以实现周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis为了达到最快的读写速度将数据读到内存中,并且通过异步的方式将数据写入到磁盘,所以redis具有快速和数据持久化的特征。如果不将数据放到内存中,磁盘的IO速度会严重影响到Redis的性能。

  Redis是单进程单线程的。redis利用队列技术将并行访问变为串行访问,消除了传统数据库串行控制开销

     redis支持主从的模式。原则:Master会将数据同步到slave,而slave不会将数据同步到master。Slave启动时会连接master来同步数据。这是一个典型的分布式读写分离模型。我们可以利用master来插入数据,slave提供检索服务。这样可以有效减少单个机器的并发访问数据

  Redis的主要缺点就是数据库容量受到内存的限制,不能够用作海量数据的高性能的读写,因此Redis适合的场景就是局限于较小数据量的性能操作和也能算上。

  我们大家听的最多的Redis的作用其实就是缓存了吧,确实如此,比如我们项目中使用的二级缓存就可以使用Redis来实现,就是通过Redis来实现的,但是强大的Redis真的只有缓存的功能吗?答案是不仅仅如此,让我们看看可以使用Redis实现实现哪些功能

   1、缓存  毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效

   2、队列  我们可以使用List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;

   3、订阅/发布  当用户订阅了某些公众号,每当发布者发布一次,用户就可以立马接受到该消息。

   4、排行榜   如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的SortSet数据结构能够非常方便搞定;

   5、计数器/限数器  利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的     读写会带来相当大的压力;限数器比较典型的操作就是限制用户访问某个API的频率,当时用秒杀抢购时,防止用户疯狂点击带来的不必要的压力。

   6、好友关系 上面我们已经说过了redis支持使用并集、交集等集合的一些操作,可以实现次功能,我们都是用微信或者QQ这些聊天工具,上面会显示两个人之间的共同好友,就可以使用该命令实现

   7、Session  使用Ngnix实现负载均衡也可以是使用Redis来实现session共享等,至于为什么要实现session共享,主要是因为我们实现负载均衡,是为了减轻服务器的压力,但是需要保持服务器上用户的使用同步,不可能每访问轮询服务器就需要用户登陆一次吧,这是用户不想看到的。

  是不是突然感觉Redis很强大,是不是特别着急想要去尝试去了解一下它,先别着急,这些东西因为内存比较多,也为了给小伙伴们讲解的更加详细在以后的文章中会一一讲解,尽量让大家学起来容易。

三、总结

  Redis功能很强大,之前面试java的时候,经常被问到Redis相关问题,之前一直就是傻傻的认为只能够作为缓存,所以,每位面试官就反问我,你只用Redis作为缓存吗,其他没用过吗?我当时还在想Redis本来就是为了作为缓存应用而生的,只需要会缓存就可以了,现在想想真的是很天真,希望大家能够多多关注我之后的相关文章,不要将来面试的时候出现像我一样的情况,祝愿小伙伴们早日找到满意的工作,更上一层楼。

  

【Redis】Redis开篇与如何安装单机版Redis,这次我会了!! 学习视频:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!” />学习视频:[外链图片转存中…(img-ResbGZy0-1713534638361)]大厂面试真题:[外链图片转存中…(img-ats2eO0B-1713534638362)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! 阅读详情

相关推荐

【Redis】Redis开篇与如何安装单机版Redis,这次我会了!!(1)

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!/>

2401_83641314的博客 894

【Redis】Redis学习开篇概述

本篇简单阐述了Redis的发展趋势和文章专栏目标。 介绍了Redis线程的发展历史。

啾啾头号大粉丝打工买粮博客 1240

大疆上云API-1.10.0版本-设备位置数据实时处理与WebSocket推送实战解析

本文深入解析了大疆上云API 1.10.0版本中设备位置数据的实时处理与推送全链路。通过剖析源码,详细阐述了从MQTT接收OSD数据、Spring Integration路由分发、业务逻辑处理到WebSocket实时推送至前端地图的核心流程,并提供了实战优化与避坑指南,帮助开发者构建高可靠的无人机实时定位系统。

weixin_29291863的博客 413

Redis源码剖析系列博文开篇&大纲

今年我启动了好几个比较有挑战的个人项目,比如写一门编程语言、成为一名视频UP主、写科幻小说…… 这些项目目前进度都很堪忧,一方面这些项目挑战都比较大,另一方面业余时间还要忙着吃吃喝喝、追剧、刷综艺、睡懒觉…… 不过有个项目进度不至于那么不堪,那就是今天的猪脚——《Redis源码剖析》系列博文,今天也是这个系列博文的开篇。为此,我也在github上建立了中文注解版的Redis源码库,详见https://github.com/xindoo/redis,目前已经添加近700行的中文注释,欢迎Star和关注。

xindoo 3139

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 229

UE4_SpeedTree Shader源码分析

目录 1.UMaterialExpressionSpeedTree::Compile 2.Compiler->SpeedTree 3.GetSpeedTreeVertexOffset 4.Scene中的SpeedTree应用 (Scene->UpdateSpeedTreeWind) 5.GetSpeedTreeVertexOffsetInner 由于之后做风场,也需要在S...

zzgyy123的专栏 2632

Redis开篇

Redis系列的开篇,基于Redis7或更高版本,主要介绍Redis的基本功能使用,性能调优和高级特性,以及应用场景和底层源码和原理解读等

Liu Zijian‘s Blog 932

MATLAB出现”警告: 名称不存在或不是目录“的解决方案

MATLAB出现 警告: 名称不存在或不是目录 的解决方案1. 出现错误2. 问题解释3. 解决方法4. 特殊情况5. 问题解决6. 多多点赞交流 1. 出现错误 打开MATLAB突然发现,出现下面的错误: 提示我们不存在这样的路径。 2. 问题解释 这样的错误很明显,我们曾经在预设路径中添加了这个文件夹。 在某种情况下,我们把它删除了,现在MATLAB找不到它了。 (这里我在桌面上添加了新建文件夹,然后将其添加到MATLAB的搜索路径中。之后把新建文件夹删除了,所以就会出现这样的报错) 3. 解决方法

qq_18820125的博客 5万+

【Redis】:从应用了解Redis

Redis是一个高性能的内存数据库,支持字符串、散列、列表等五种数据类型,具备持久化(RDB/AOF)、事务、发布订阅等功能。通过主从复制和哨兵机制实现高可用性,哨兵节点监控集群状态并自动故障转移,确保服务稳定。Redis在内存操作的基础上结合硬盘存储优化性能,适用于需要高速读写的场景。

jerryhe_com的博客 1372

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

输入电压采集上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, 由于二极 管的正向导通特性, 用户反接电源时亦不会烧坏后级电路。图中 R8、R9 组成分压电路, 由单片机 AD 采集 IO 口 P14 采集 AD 值, 并由计算公式电压 =133300(AD/4096)mV;

Naiva的博客 1995

YOLOv11改进 | 特殊场景检测篇 | 利用图像去雾网络UnfogNet改进yolov11图像雾天检测能力(全网独家首发改进)

本文给大家带来的改进机制是利用UnfogNet超轻量化图像去雾网络,我将该网络结合YOLOv11针对图像进行去雾检测(也适用于一些模糊场景),我将该网络结构和YOLOv11的网络进行结合同时该网络的结构的参数量非常的小,我们将其添加到模型里增加的计算量和参数量基本可以忽略不计这是非常难得的,因为其也算是一种图像增强算法,同时本文的内容不影响其它的模块改进可以作为工作量凑近大家的论文里,非常的适用,图像去雾检测为群友最近提出的需要的改进。欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 1629

redis 源码讲解开篇

网上各种redis源码讲解,很多质量都非常棒,那我又为什么会再来个redis源码讲解呢;曾几何时,想深究redis源码,网上找相关资料来看,可是看下来总是一知半解,没能相对系统和理解,你应该有和我一样感受吧。原因就是少了实践(让代码跑起来),我要来篇实践性的redis讲解系列来填补这空缺

u010938668的博客 320

少儿学编程系列--使用递归画出龙形曲线DragonCurve

龙形曲线(Dragon Curve) 龙形曲线(Dragon Curve)又叫分形龙,是一种自相似碎形曲线的统称,因形似龙的蜿蜒盘曲而得名 使用黄金比例画龙形曲线 根据黄金比例画一条龙曲线。每次递归,第一步向左转32.89度,移动0.74倍原距离;第二个递归步骤向右转46.99度,移动原来距离的0.55倍。请查看这个网页(https://larryriddle.agnesscott.org/ifs/heighway/goldenDragon.htm)了解关于龙形黄线数学的细节 龙形曲线效果 .

penriver的博客 2299

一文带你了解Redis是什么和Redis能做什么

本篇文章对redis是什么,和redis能用来干什么进行了详细的举例解释。同时也对分布式系统和八大架构的演进进行了解释说明。最后总结了redis的应用场景和优点。快进来阅读这篇详细的文章吧!

weixin_67596609的博客 1970

看完这篇你就能讲解LLC软开关:一文秒懂 ZVS 和 ZCS 到底啥意思!

想要 MOS 管ZVS 好实现➜ 把工作频率保持在 fr1 或更高。想让整流二极管也ZCS 实现➜ 频率就别高过 fr1。设计磁性元件时,一定要计算好 Lr、Lm、Cr 的值,这直接决定你 fr、fr1 是多少!LLC 的软开关技术不是“魔法”,是电感电容+频率控制的精妙组合;fr1 就像黄金分割点,整流和开关都能“刚刚好”;不是所有软开关都能同时实现,要看你在频率曲线的哪一段!

weixin_43199439的博客 1546

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[Redis系列]-开篇之Redission#set成功get不到

Redis目前已经是行业内很成熟,很香的一款nosql。猿Why最早时候使用,要追溯到在上一家单位的时候了。当时只是做一个服务调用者,从未了解过Redis的知识。 但是最近项目中多次遇到一个奇怪的问题:“应用程序调用Redis服务(Redission作为客户端),set成功之后,get获取数据为null”。为了一探究竟,方便排查问题,决定认真学习一番Redis。学习分为三个步骤:基础命令学习、客户端工具学习、Redis服务学习(集群),以此文章为开篇。 为了将问题最简化: 在本地启用一个单节点Redis服务

WN-YoungKun的博客 4321

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Redis1开篇

目录 1、Redis 介绍 课程内容 2、了解Redis 2.1、Redis介绍 2.2、Redis的优点: 2.3、Redis的基本操作 2.3.1、select 2.3.2、dbsize 2.3.3、keys 2.3.4、flushdb flushall 2.4、Redis的单线程的 2.5、Redis的基本数据类型 2.5.1、String:字符串 ①set ②get ③exists ④append ⑤strlen ⑥incr decr 1、Redis 介绍

m0_54356563的博客 873

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

测试人员都需要了解哪些Redis知识?

1、redis是什么,为什么使用redis会非常快2、redis支持的数据类型都有那些3、如何通过。

weixin_71807218的博客 1775

Redis-基本了解

Redis 是⼀种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis 中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、 Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis 可以满⾜很多的应⽤场景,⽽且因为Redis会将所有数据都存放再内存中,所以它的读写性能⾮常惊 ⼈。

ketil27的博客 2492

带你彻底了解redis

本文从redis数据类型到项目中的实战使用,包含两种使用方式:redisTemplate、Spring Cache再到缓存一致性问题都作出了详细解释,而后又对redis内容进阶到redis淘汰策略、redis持久化、redis主从复制、redis哨兵以及使用同步问题都做出来详细的解释,最后通过16中具体的缓存使用场景帮助大家理解原理到实战..................

zhiyikeji的博客 1700

【Redis7】了解Redis

如 Map 一样的key-value 对,典型代表就是 Redis。

m0_61057201的博客 1416

【Redis】1、Redis学习笔记(开篇)

相信在看了这篇Blog之后您对Redis已经有了一个大致的了解。OK,现在就让我们开始Redis的学习之旅吧。请继续关注该系列后面的博客。

记录生活 719

了解Redis

Redis是一种高性能内存数据库,具备微秒级响应速度,支持丰富的数据结构(String、List、Set等)和持久化机制(RDB/AOF)。其核心优势包括内存存储、单线程I/O多路复用和高效数据结构设计。典型应用场景涵盖缓存、会话存储和实时统计等。Redis提供主从复制、哨兵模式和Cluster集群三种扩展方案,从单点高可用演进到分布式架构。通过过期策略(惰性+定期删除)和内存淘汰机制(如LRU)智能管理数据生命周期。Redis 6+新增多线程I/O、ACL权限控制等功能,兼顾性能与安全。运维时需注意避免大

z275598733的博客 1070

redis核心技术与实战系列0:开篇词

开篇词-这样学redis,才能技高一筹 开篇专栏来记录我在极客时间上学习的redis核心技术与实战系列这门课.老师讲的不错,从树状知识图的框架讲起,再来细讲其中的一个个枝叶的知识点.可以帮助新手较快的了解redis整个知识框架图.在此做个简单的知识点梳理,一是帮助自己更好的吸收理解,二是重拾博客,更好的搭建自己的知识图谱体系. redis性能相关的问题 问题一:为了保证数据的可靠性,redis需要在磁盘上读写AOF和RDB,但是在高并发场景下会带来两个新的问题: 1、写AOF和RDB会造成redis性能

aogogo的博客 1685

深入了解 Maven 和 Redis

Maven 是一个基于项目对象模型(POM)的自动化构建工具,主要用于 Java 项目的管理和构建。它通过定义一套标准化的项目结构和构建流程,帮助开发人员更高效地管理项目的依赖、编译、测试、打包和部署等环节。Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,并且提供了丰富的操作命令,使得开发人员可以方便地存储和管理各种类型的数据。

A_cot的博客 1867
上一篇: Linux-Ubuntu初学者
下一篇: Redis实现集群环境配置
JavaWeb_Hao
博客等级 码龄9年 21粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值