二、Redis的特性与应用场景

Redis是一个在内存中存储数据的中间件,主要用于作为数据库、数据缓存,在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。

一、Redis特性

1、在内存中存储数据

MySQL主要是“表”的方式来存储组织数据的,是“关系型数据库”

Redis主要是通过“键值对”的方式来存储组织数据的,key都是string,value则可以是strings,lists,hashes,sets,sorted sets,streams 等,是“非关系型数据库”。

2、可编程的

针对Redis的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行一些操作(可以带有一些逻辑)

3、可扩展性

可以在Redis原有的功能基础上再进行扩展,Redis提供了一组API。自己去扩展Redis的功能,比如通过扩展,让Redis支持更多的数据结构和更多的命令。

4、持久化

Redis把数据存储在内存中,但是内存的数据是易失的,进程的退出或系统的重启都可能导致数据丢失。Redis会把数据存储在硬盘上,以内存为主,硬盘为辅。如果Redis重启了,就会在重启时加载硬盘中的备份数据,使Redis恢复到重启前的状态。

5、集群

Redis作为分布式系统的中间件,能够支持集群是很关键的。类似于之间所说的“分库分表”,引入Redis能存储的数据是有限的(内存空间有限),引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分。

6、高可用的(冗余/备份)

Redis自身支持“主从”结构的,从节点就相当于主节点的备份了。

7、快

为什么Redis快??

1、Redis数据存储在内存中,就比访问硬盘的数据库,要快很多

2、Redis核心功能都是比较简单的逻辑,核心功能都是比较简单的操作内存的数据结构。

3、从网络角度上,Redis使用了 IO 多路复用的方式(epoll),类似于Java使用一个线程,管理多个socket。

4、Redis使用的是单线程模型,这样的单线程模型,减少了不必要的线程之间的竞争开销。多线程提高效率的前提是,CPU密集型任务,使用多个线程可以充分调用CPU多核资源。但是Redis的核心任务就是操作内存的数据结,不会吃很多的CPU。

二、Redis的应用场景

1、数据库

大多数情况下,数据存储考虑的都是“大”,但也有一些场景考虑的是“快”,弊端是使用Redis,硬件资源消耗较大,成本较高。Redis存储的是全量数据,这里的数据是不能随便丢失的。

2、缓存

使用MySQL数据库存数据大但是慢,根据二八原则,把热点数据拎出来,存储在Redis中。

Redis存储的是部分数据,MySQL存储的是全量数据,哪怕Redis没了,还可用从MySQL中加载。

3、会话存储

cookie:实现用户身份信息的保存,只是在浏览器这边存储了一个用户的身份标识sessionId,需要配合session

session:存储在应用服务器上,这里真正存储了用户数据

在分布式操作系统中,用户的登录请求会被负载均衡器分配到应用服务器上,同一个用户的请求登录操作在不同时刻可能保存在不同的应用服务器上,这对保存信息不是很友好。因此有两种方案来解决这个问题。

(1)想办法让负载均衡器,把同一个用户的请求始终打到同一个机器上(不能轮询了,而是要通过userId之类的方式来分配机器)

(2)把会话数据单独拎出来,存储在Redis中(常见的做法)

这种方法即使应用程序重启了,会话不会丢失

4、消息队列(应用少) 

基于这个可以实现一个网络版本的生产者,消费者模型。优势:解耦合、削峰填谷

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/230069.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 集成支付宝支付

网页操作步骤 1.进入支付宝开发平台—沙箱环境 使用开发者账号登录开放平台控制平台 2.点击沙箱进入沙箱环境 说明:沙箱环境支持的产品,可以在沙箱控制台 沙箱应用 > 产品列表 中查看。 3.进入沙箱,配置接口加签方式 在沙箱进行调试前…

深度学习|10.2 边缘检测示例 10.3 更多边缘检测

文章目录 如何在编程中实现卷积运算使用卷积实现边缘检测结果矩阵的元素正负性质的意义水平分类器如何构造卷积运算使用的矩阵 原矩阵通过一个过滤器(filter)/核心(kernel)来生成一个新的矩阵。 如何在编程中实现卷积运算 使用卷积…

LAYABOX:2024新年寄语

2024新年寄语 过去的一年,尽管许多行业面临严峻挑战和发展压力,小游戏领域却逆势上扬,年产值首次突破400亿元大关,众多优质小游戏企业收获颇丰。 对此,祝福大家,2024一定更好! 过去的一年&#…

跨站脚本攻击漏洞XSS绕过22种方式总结

XSS漏洞简介 跨站脚本攻击在目前这个时间节点还是属于一个排位比较高的漏洞,在OWASP TOP10 2021中隶属于注入型漏洞,高居TOP3的排位,可见这个漏洞的普遍性。跨站脚本攻击的学习中我们主要需要明白的是跨站的含义,以及XSS的核心。…

如何自动生成 API 接口文档 - 一份详细指南

本篇文章详细教你如何使用 Apifox 的 IDEA 插件实现自动生成接口代码。好处简单总结有以下几点: 自动生成接口文档: 不用手写,一键点击就可以自动生成文档,当有更新时,点击一下就可以自动同步接口文档;代码…

关于MIPS上手应知应会-如何把C语言改写为MIPS!

文章目录 寄存器指令使用技巧翻译C/Cif/else语句switch语句for循环while 循环do...while循环一维数组定义与使用二维数组定义与使用例 :哈密顿回路 注意立即数被符号位扩展 参考链接 寄存器 NameReg. NumUsage z e r o zero zero0constant value 0(恒为0) a t at a…

学习使用wps将ppt的页面保存为图片的方法

学习使用wps将ppt的页面保存为图片的方法 方案 方案 1、打开ppt,点击文件,另存为,选择文件类型为图片格式,jpg或者png,如下图: 2、点击每张幻灯片

2023启示录丨自动驾驶这一年

图片|《老人与海》插图 过去的20年,都没有2023年如此动荡。 大模型犹如一颗原子弹投入科技圈,卷起万里尘沙,传统模式瞬间被夷为平地,在耀眼的白光和巨大的轰鸣声之下,大公司、创业者、投资人甚至是每一位观…

大语言模型LLM微调技术:P-Tuning

1 引言 Bert时代,我们常做预训练模型微调(Fine-tuning),即根据不同下游任务,引入各种辅助任务loss和垂直领域数据,将其添加到预训练模型中,以便让模型更加适配下游任务的方式。每个下游任务都存…

四、HTML 属性

属性是 HTML 元素提供的附加信息。 一、HTML 属性 HTML 元素可以设置属性属性可以在元素中添加附加信息属性一般描述于开始标签属性总是以名称/值对的形式出现&#xff0c;比如&#xff1a;name"value"。 二、 属性实例 HTML 链接由 <a> 标签定义。链接的地…

python设计模式:模板方法模式

更多Python学习内容&#xff1a;ipengtao.com 软件设计和编程中&#xff0c;设计模式是一种有助于解决常见问题的强大工具。其中之一是"模板方法模式"&#xff0c;它是一种行为型设计模式&#xff0c;允许你定义一个算法的骨架&#xff0c;但将一些步骤的具体实现延迟…

声明式管理方(yaml)文件

声明式管理方(yaml)文件: 1、适合对资源的修改操作 2、声明式管理依赖于yaml文件&#xff0c;所有的内容都在yaml文件当中。 3、编辑好的yaml文件需要依靠陈述是还是要依靠陈述式的命令发布到k8s集群当中 create只能创建&#xff0c;不能更新。从指定yaml文件中读取配置&#…

静态代理、JDK动态代理、CGLIB动态代理以及JDK和CGLIB动态代理的区别

代理 什么是代理&#xff1f;两个设计原则三要素 静态代理静态代理的实现定义接口-定义行为静态代理 -> 目标角色静态代理-> 代理角色静态代理测试 特点 JDK动态代理newProxyInstance获取代理对象通过代理对象实现目标对象的功能特点 Java动态代理类中的invoke是怎么调用…

OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 在最新的 OpenAI 官方 APIs 文档中&#xff0c;Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。 官方文档地址&#xff…

06.02 customizing plots with style sheets

使用 style 来配置 pyplot 风格 import matplotlib.pyplot as plt import numpy as np%matplotlib inlinestyle 是 pyplot 的一个子模块&#xff0c;方便进行风格转换&#xff0c; pyplot 有很多的预设风格&#xff0c;可以使用 plt.style.available 来查看&#xff1a; plt.…

GO语言笔记1-安装与hello world

SDK开发工具包下载 Go语言官网地址&#xff1a;golang.org&#xff0c;无法访问Golang中文社区&#xff1a;首页 - Go语言中文网 - Golang中文社区下载地址&#xff1a;Go下载 - Go语言中文网 - Golang中文社区 尽量去下载稳定版本&#xff0c;根据使用系统下载压缩包格式的安装…

linux释放交换空间-Swap

确保剩余内存比swap内存空间大&#xff0c;再执行以下操作&#xff0c;否则会宕机&#xff01; 查看swap分区 swapon -s 会查看到你的swap分区位置 停止swap分区 停止swap分区是将swap内存释放到实际内存中 swapoff /dev/dm-1开启swap分区 swap分区内存成功释放到实际内…

【一文入门】Git常用命令集锦--分支操作和版本管理篇

前言 Git 是一种分布式版本控制系统&#xff0c;可以帮助团队协作开发、管理和维护代码&#xff0c;提高代码质量和效率&#xff0c;掌握常用版本管理命令可以帮助我们更好地管理代码变更和历史记录。下面我将介绍开发中常用的一些Git分支操作和版本管理命令 1 分支操作 1.1 …

diffusers 源码待理解之处

一、训练DreamBooth时&#xff0c;相关代码的细节小计 ** class_labels timesteps 时&#xff0c;模型的前向传播怎么走&#xff1f;待深入去看 ** 利用class_prompt去生成数据&#xff0c;而不是instance_prompt class DreamBoothDataset(Dataset):"""A dat…

CCNP课程实验-05-Comprehensive_Experiment

目录 实验条件网络拓朴 基础配置实现IGP需求&#xff1a;1. 根据拓扑所示&#xff0c;配置OSPF和EIGRP2. 在R3上增加一个网段&#xff1a;33.33.33.0/24 (用Loopback 1模拟) 宣告进EIGRP&#xff0c;并在R3上将EIGRP重分布进OSPF。要求重分布进OSPF后的路由Tag值设置为666&…