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

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
python读取SQLite表个并生成pdf文件
代码用于创建含50列的SQLite数据库并插入500行随机浮点数据,随后读取数据,通过ReportLab生成横向PDF表格,包含格式化(两位小数)及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...

短视频时长预估算法调研
weighted LR o d d s T p 1 − p ( 1 − p ) o d d s T p ( T p o d d s ∗ p ) o d d s p o d d s T o d d s odds \frac{Tp}{1-p} \newline (1-p)odds Tp \newline (Tp odds * p) odds \newline p \frac{odds}{T odds} \newline odds1−pTp(1−p)oddsTp(Tpodds…...