分布式缓冲-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 …...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...