当前位置: 首页 > news >正文

分布式缓冲-Redis

请添加图片描述
个人名片:

博主:酒徒ᝰ.
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志三人行,必有我师焉。

请添加图片描述
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 一、Redis
    • 1. 介绍
    • 2. 安装

单机的Redis存在四大问题:

在这里插入图片描述

一、Redis

1. 介绍

Redis:高效内存数据存储的关键应用
在当今这个数据驱动的时代,如何快速、高效地存储和管理数据成为了一个关键问题。Redis作为一种高性能的键值对存储数据库,在许多场景下成为了首选。

一、Redis简介
Redis(Remote Dictionary Server)是由意大利人Antirez开发的一款开源的键值对存储系统。与传统的关系型数据库不同,Redis基于内存进行操作,因此具有非常高的读写速度。它支持字符串、列表、集合、有序集合和哈希表等多种数据结构,使得Redis在处理复杂数据时非常灵活。

二、Redis的特点

  • 高速读写:Redis的操作主要基于内存,使得读取和写入的速度都非常迅速。
  • 数据结构丰富:Redis支持多种数据结构,可以满足不同的应用需求。
  • 持久化机制:虽然主要基于内存操作,但Redis也支持将数据定期保存到磁盘,以防止数据丢失。
  • 主从复制:Redis支持主从复制功能,可以实现数据的备份和扩展。
  • 事务处理:Redis支持事务处理,可以在一组命令中执行多个操作,并保证操作的原子性。

三、Redis的核心技术及实现方式

  • 内存存储:Redis将所有数据存储在内存中,从而实现了高速的读写操作。
  • 哈希表:Redis使用哈希表来存储和管理键值对,使得查找和修改等操作的时间复杂度为O(1)。
  • 双端队列:Redis使用双端队列来处理网络请求,使得客户端的请求可以快速地被处理和响应。

四、Redis的应用场景

(1)缓存:Redis作为缓存层可以大大提高应用的读写速度,特别是对于读操作密集型的场景。
(2)消息队列:Redis的列表和发布订阅功能可以用于实现消息队列,帮助解决分布式系统中的消息通信问题。
(3)数据存储:对于需要快速读写、持久化保存的数据,Redis是一个很好的选择。
(4)实时数据分析:Redis支持的事务处理功能可以用于实时数据分析,提供实时的业务洞察。

五、Redis的优势

(1)高速读写:Redis的高速读写特性使其在处理高并发的数据请求时表现出色。
(2)丰富的数据结构:多种数据结构可以灵活地满足不同的应用需求。
(3)持久化机制:虽然主要基于内存操作,但Redis也支持将数据定期保存到磁盘,以防止数据丢失。
(4)主从复制:Redis支持主从复制功能,可以实现数据的备份和扩展。
(5)事务处理:Redis支持事务处理,可以在一组命令中执行多个操作,并保证操作的原子性。

六、Redis的限制

(1)数据大小限制:由于Redis是基于内存的数据库,因此其存储的数据量受限于可用内存的大小。对于需要存储大量数据的场景,可能需要考虑其他数据库。
(2)持久化成本:虽然Redis提供了持久化机制,但相对于纯内存操作,持久化会带来一定的性能开销和时间延迟。需要权衡持久化的需求和性能开销。
(3)集群部署:对于大规模的数据存储需求,需要实现Redis集群来分担数据和负载。集群的维护和管理需要额外的技术和资源投入。
(4)不支持复杂的事务操作:与关系型数据库相比,Redis的事务处理功能较弱,不支持复杂的事务操作和ACID属性。需要谨慎处理事务操作的需求。

五、Redis的实际应用案例分析

  • 案例一:电商推荐系统
    在电商平台上,用户的行为数据是非常丰富的。为了给用户提供个性化的推荐服务,可以将用户的行为数据存储在Redis中,并使用其丰富的数据结构和查询功能来快速分析和检索用户数据。根据用户的历史行为和偏好,可以生成个性化的商品推荐列表,提高用户转化率和购物体验。

  • 案例二:新闻资讯平台
    新闻资讯平台通常需要实时更新和推送最新的内容给用户。使用Redis可以将热点新闻的标题和摘要存储在内存中,以实现快速的检索和展示。同时,通过Redis的发布订阅功能,可以实时将新内容推送给订阅者,提高平台的实时性和响应速度。

  • 案例三:游戏服务器
    在游戏服务器中,玩家的状态和游戏进度需要实时更新和维护。使用Redis可以保存玩家的状态信息和游戏进度,使得多个游戏服务器可以共享和同步这些信息。同时,通过Redis的队列功能可以实现玩家指令的快速处理和响应,提高游戏体验和服务器性能。

2. 安装

首先需要安装Redis所需要的依赖:

yum install -y gcc tcl

然后将课前资料提供的Redis安装包(redis-6.2.4.tar.gz)上传到虚拟机的任意目录:

解压缩:

tar -xvf redis-6.2.4.tar.gz

进入redis目录:

cd redis-6.2.4

运行编译命令:

make && make install

过程比较漫长,如果没有出错,应该就安装成功了。
在这里插入图片描述

然后修改redis.conf文件中的一些配置:

# 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问 
bind 0.0.0.0 #在75行
# 数据库数量,设置为1 
databases 1 #在327行

启动Redis:

redis-server redis.conf

停止redis服务:

redis-cli shutdown

或者ctrl+c

相关文章:

分布式缓冲-Redis

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…...

C# 流Stream详解(3)——FileStream源码

【FileStream】 构造函数 如果创建一个FileStream,常见的参数例如路径Path、操作方式FileMode、权限FileAccess。 这里说下FileShare和SafeFileHandle。 我们知道在读取文件时,通常会有两个诉求:一是如何更快的读取文件内容;二…...

C语言的文件操作(炒详解)

⭐回顾回顾文件操作的相关细节⭐ 欢迎大家指正错误 📝在之前的学习中,不管增加数据,减少数据,当程序退出时,所有的数据都会销毁,等下次运行程序时,又要重新输入相关数据,如果一直像这…...

27.基于ADS的不等分威尔金森功分器设计

27.基于ADS的不等分威尔金森功分器设计 等分的威尔金森功分器可以使用ADS非常快速的设计出来,但是不等分的功分器却没有便捷的设计方法,在此给出快速的设计方法与案例,方便大家实际设计。 等分版本的威尔金森功分器设计教程:12、…...

Linux自用命令

sudo su/sudo -i:获取root权限 cd:目录切换 cd / 切换到根目录 cd … 切换到上一级目录 cd ~ 切换到home目录 cd - 切换到上次访问的目录 ls:目录查看 ls 查看当前目录下的所有目录和文件 ls -a 查看当前目录下的所有目录和文件(…...

clickhouse union all之后数据量不一致

环境: clickhouse版本:22.8.16.32 问题:clickhouse使用union all查询结果与每一段sql查询结果只和不一致 原因:因为clickhouse版本问题,官方给出不同的解释 解决方案:将union all的每一段sql用括号括起来…...

力扣刷题19-删除链表的倒数第N个节点

题目来源 题目描述: class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {//为了删除的格式一样,引入虚拟头节点ListNode dummyNodenew ListNode(1);dummyNode.nexthead;ListNode slowdummyNode;ListNode fastdummyNode;for(int…...

Unity中的简单数据存储办法

这段代码演示了Unity中的简单数据存储办法 当涉及到不同类型的存储时,下面是一些示例代码来演示在Unity中如何使用不同的存储方法: 1. 临时存储示例代码(内存变量): csharp // 定义一个静态变量来存储临时计分 pub…...

Pytorch-MLP-CIFAR10

文章目录 model.pymain.py参数设置注意事项运行图 model.py import torch.nn as nn import torch.nn.functional as F import torch.nn.init as initclass MLP_cls(nn.Module):def __init__(self,in_dim3*32*32):super(MLP_cls,self).__init__()self.lin1 nn.Linear(in_dim,1…...

SQL2 查询多列

描述 题目:现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据 示例:user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20北京大学Beijing42…...

算法分享三个方面学习方法(做题经验,代码编写经验,比赛经验)

目录 0 . 前言:(遇到OI不要慌)(只要道路对了,就不怕遥远) 1. 做题经验谈 1.1 做题的目的 1.2 我对于算法比赛的题目的看法 1.2.1 类似题 1.2.2 套模型: 1.3 在训练过程中如何做题 1.4 一些建议&…...

爬虫 — 验证码反爬

目录 一、超级鹰二、图片验证模拟登录1、页面分析1.1、模拟用户正常登录流程1.2、识别图片里面的文字 2、代码实现 三、滑块模拟登录1、页面分析2、代码实现(通过对比像素获取缺口位置) 四、openCV1、简介2、代码3、案例 五、selenium 反爬六、百度智能云…...

视频图像处理算法opencv模块硬件设计图像颜色识别模块

1、Opencv简介 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Rub…...

目标检测网络之Fast-RCNN

文章目录 Fast RCNN解决的问题Fast RCNN网络结构RoI pooling layer合并损失函数及其传播统一的损失函数损失函数的反向传播过程Fast RCNN的训练方法样本选择方法SGD参数设置多尺度图像训练SVD压缩全连接层对比实验对比实验使用到的网络结构VOC2010和VOC2012数据集结果VOC2007数…...

Golang Gorm 创建HOOK

创建的时候,在插入数据之前,想要做一些事情。钩子函数比较简单,就是实现before create的一个方法。 package mainimport ("gorm.io/driver/mysql""gorm.io/gorm" )type Student struct {ID int64Name string gorm:&q…...

计算机视觉的应用15-图片旋转验证码的角度计算模型的应用,解决旋转图片矫正问题

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用15-图片旋转验证码的角度计算模型的应用,解决旋转图片矫正问题,在CV领域,图片旋转验证码的角度计算模型被广泛应用于解决旋转图片矫正问题,有效解决机…...

【Seata】分布式事务问题和理论基础

目录 1.分布式事务问题 1.1本地事务 1.2分布式事务 2.理论基础 2.1CAP定理 2.1.1一致性 2.1.2可用性 2.1.3分区容错 2.1.4矛盾 2.2BASE理论 2.3解决分布式事务的思路 1.分布式事务问题 1.1本地事务 本地事务,也就是传统的单机事务。在传统数据库事务中…...

文件打包解包的方法

在很多情况下,软件需要隐藏一些图片,防止用户对其更改,替换。例如腾讯QQ里面的资源图片,哪怕你用Everything去搜索也搜索不到,那是因为腾讯QQ对这些资源图片进行了打包,当软件运行的时候解包获取资源图片。…...

npm 清缓存(重新安装node-modules)

安装node依赖包的会出现失败的情况,如下图所示: 此时 提示有些依赖树有冲突,根据提示 “ this command with --force or --legacy-peer-deps” 执行命令即可。 具体步骤如下: 1、先删除本地node-modules包 2、删掉page-loacl…...

sqlserver查询表中所有字段信息

精简 SELECT 字段名 a.name,主键 case when exists(SELECT 1 FROM sysobjects where xtypePK and parent_obja.id and name in (SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id a.id AND colida.colid))) then √ else …...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式

pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图&#xff0c;如果边框加在dom上面&#xff0c;pdf-lib导出svg的时候并不会导出边框&#xff0c;所以只能在echarts图上面加边框 grid的边框是在图里…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...