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

Java面试题-Redis-第一天(Redis简单介绍)

目录

一、Redis是什么?优缺点?

二、Redis为什么这么快?

三、Redis相较于Memcached有哪些优势?

四、为什么使用Redis做缓存?

五、为什么要用Redis而不用map/guava做缓存?

六、Redis的常用场景有哪些?

七、Redis的数据类型有哪些?


一、Redis是什么?优缺点?

Redis就是一个基于内存的数据库 存储K - V结构的非关系型数据库

优点:

1. 速度快,因为是直接操作缓存,减少磁盘io

2. 并发量高  读写并发量高 可以支持高达10w次的并发量 读可以达到10w 写也可以达到8w多

3. 支持多种数据结构 并且还对这些数据结构作了一些优化

4. 丰富的特性 超时机制 丰富的api 等 

5. 支持主从复制,可以将主节点的数据同步到从节点 保证高可用 

6. 支持持久化存储,可以定期的异常将缓存数据持久化到硬盘中

7. 支持事务  Redis中所有的单个操作都是原子性性  即使多个命令  也可以使用脚本的方式确保整体原子性  使用MULTI和EXEC包裹

二、Redis为什么这么快?

 1. 操作的是缓存

 2. 对数据结构作了优化

 3. 单线程,是因为减少锁 资源竞争 还有就是减少上下文切换带来的性能消耗

 4. 非阻塞IO,多路复用IO技术,将epoll作为多路复用IO技术的实现,使用Redis的事件处理机制,将epoll中的连接、读写、关闭都转为事件,不在IO上面浪费过多的时间

5. 使用的底层模型不同,创建了自己的VM机制,减少了系统调用

VM机制就是将访问较少的数据从内存中搬到磁盘中,为内存腾出更多的空间,这些空间存储热数据

Redis提高容量有两种方法:1. Redis集群 部署多个redis服务器 2. 使用VM机制将冷数据放到磁盘中

三、Redis相较于Memcached有哪些优势?

1. Memcached不支持数据持久化到硬盘中,断电数据就没了

2. Redis的数据类型更为丰富,而Memcached只支持字符串

3. 集群模式,redis服务器天然支持集群,但是Memcached没有原生的集群,需要到客户端操作之后,再上传到Memcached分片中

4. IO模型:Redis是单线程的IO多路复用模型,而Memcached是多线程的非阻塞IO模型

5. Redis支持服务端操作数据:Redis拥有更加丰富的数据类型和操作数据的方法,都可以在服务端完成,而Memcached需要在客户端进行操作,然后再上传到服务端去

6. 性能:Redis性能更高

总的来说需要缓存支持多种数据结构以及多种操作数据的方法,Redis是一个不错的选择

四、为什么使用Redis做缓存?

1. 高并发

Redis可以支持10w的并发量 直接操作数据库的并发量远远不及Redis的并发量  所以我们考虑将一些数据放到缓存中,这样一部分请求就能直接到Redis

2. 高性能

用户第一次访问数据库,因为是与磁盘打交道,因此速度较慢,将用户的数据放到缓存中 下次直接就从缓存中获取

五、为什么要用Redis而不用map/guava做缓存?

主要因为一个是本地缓存一个是分布式缓存

1. Redis可以支持分布式缓存,各个服务器都可以使用,而map只存在于自身的jvm中,一旦jvm停止数据就没了 也不能共享

2. 持久化

3. 数据量

4. Redis有超时机制等 可以实现很多功能的api

5. Redis支持的并发量更高

6. Redis可以单独部署  多个系统共享

7. Redis有相应的管理工具

六、Redis的常用场景有哪些?

1. 缓存

2. 分布式会话

可以将session信息放到redis中 多个服务就可以共享 实现会话信息的共享 例如登录成功 就可以将会话信息存储到Redis中

3. 分布式锁

利用sexnx指令,可以实现多次操作只能一次成功的效果  因此可用在多个服务共同操作数据,并发情况下,使用分布式锁解决,一次就只能一个服务抢到锁  例如 全局ID、库存、秒杀场景

4. 社交场景

可以使用set 实现点赞、踩、关注、添加好友、利用取交集共同关注、共同好友等功能

5. 计数器

使用string类型 的incr命令可以实现 

6. 排行榜

使用zset可以实现  

7. 最新列表

使用list  利用左侧插入数据 并且始终维持集合中的数量大小不变

8. 消息系统

因为redis提供了发布订阅模型以及阻塞队列 因此可以实现一个简单的消息系统

七、Redis的数据类型有哪些?

数据类型是说的value的类型,整体还是K-V类型

1. string : 字符串类型 可以放字符串可以放数字  放字符串数字还可以对字符串进行运算

2. hash:k-v类型 适合存储对象,结构清晰,并且方便对对象中的某个属性进行修改

3. set:集合类型,存储没有重复的数据 可以利用它能很容易的实现很多社交功能

4. zset:带排序的集合类型,可以通过score指定排序分数 指定排序 类似于Java中的TreeSet

5. list:列表类型,底层使用双向链表实现,可以正向获取元素,也可反向  插入也一样 可以用作最新消息的实现

相关文章:

Java面试题-Redis-第一天(Redis简单介绍)

目录 一、Redis是什么?优缺点? 二、Redis为什么这么快? 三、Redis相较于Memcached有哪些优势? 四、为什么使用Redis做缓存? 五、为什么要用Redis而不用map/guava做缓存? 六、Redis的常用场景有哪些&am…...

Java 生成和读取JSON文件

下面的demo当中 &#xff0c;是将json文件放到了zip包当中。如果不需要&#xff0c;可以拿掉。 1、生成对象JSON文件 public static void crateJson() {try {String orcPath "D:\\doc\\ts_service_orchestration.json";// 对象集合或者对象都可以List<DataPO>…...

k8s-----26、细粒度权限管理 RBAC

0、导读 每一个用户对API资源进行操作都需要通经过以下三个步骤: 第一步:对客户端访问进行认证操作,确认是否具有访问k8s权限(也就是通过serviceaccount) token(共享秘钥) SSL(双向SSL认证) …通过任何一个认证即表示认证通过,进入下一步第二步:授权检查,确认是否对资源…...

【Unity ShaderGraph】| 制作一个 高级流体水球效果

前言 【Unity ShaderGraph】| 快速制作一个 流体水球效果一、效果展示二、简易流体水球效果三、进阶流体水球效果四、应用实例 前言 本文将使用ShaderGraph制作一个 高级流体水球 &#xff0c;可以直接拿到项目中使用。对ShaderGraph还不了解的小伙伴可以参考这篇文章&#xf…...

日常软件游戏丢失msvcp120dll怎么修复?分享5个修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp120dll丢失”。那么&#xff0c;究竟什么是msvcp120dll文件&#xff1f;当它丢失时&#xff0c;我们会遇到哪些问题呢&#xff1f;本文将从以下几个方面进行详细阐述。 msvcp120dll是…...

自动驾驶之—2D到3D升维

前言&#xff1a; 最近在学习自动驾驶方向的东西&#xff0c;简单整理一些学习笔记&#xff0c;学习过程中发现宝藏up 手写AI 3D卷积 3D卷积的作用&#xff1a;对于2DCNN&#xff0c;我们知道可以很好的处理单张图片中的信息&#xff0c;但是其对于视频这种由多帧图像组成的图…...

ubuntu18.4(后改为20.4)部署chatglm2并进行基于 P-Tuning v2 的微调

下载驱动 NVIDIA显卡驱动官方下载地址 下载好对应驱动并放在某个目录下&#xff0c; 在Linux系统中安装NVIDIA显卡驱动前,建议先卸载Linux系统自带的显卡驱动nouveau。 禁用nouveau 首先&#xff0c;编辑黑名单配置。 vim /etc/modprobe.d/blacklist.conf 在文件的最后添加…...

爬虫-获取数据xpath

安装lxml pip3 install lxml基本用法 import reauests from lxml import etree url = xxx res = reuests.get(url).text html = etree.HTML(res) # 获取所有div标签 xpath = //div print(html.xpath(xpath)) #获取id=xx的div标签下的class=yy的span标签 xpath = //div[@id=&quo…...

SpringBoot中使用JdbcTemplate访问Oracle数据库

Oracle相信大家都不陌生吧&#xff0c;一个大型的数据库&#xff0c;至于数据库&#xff0c;我相信各位都比较熟悉了&#xff0c;一个软件系统&#xff0c;不论是我们常做的App、小程序、还是传统的web站点&#xff0c;我们都有用户的信息&#xff0c;相关业务的数据&#xff0…...

【Linux】权限完结

个人主页点击直达&#xff1a;小白不是程序媛 系列专栏&#xff1a;Linux被操作记 目录 前言 chown指令 chgrp指令 文件类型 file指令 目录的权限 粘滞位 umask指令 权限总结 前言 上篇文章我们说到对于一个文件所属者和所属组都是同一个人时&#xff0c;使用所属者身…...

计算机网络-应用层(3)

一、FTP 文件传输协议 (File Transfer Protocol,FTP) 简称为“文传协 议”,用于在Internet上控制文件的双向传输。 FTP 客户上传文 件时&#xff0c;通过服务器20号端口建立的连接是建立在TCP 之上的数 据连接&#xff0c;通过服务器21号端口建立的连接是建立在TCP 之上的控制连…...

虎去兔来(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...

docker基础镜像定制

docker基础镜像定制 1 简言2.准备软件源文件sources.list3.制作基础镜像3.1 编写Dockerfile命令3.2 制作基础镜像k8sbase1.03.3 测试基础镜像1 简言 官方基础镜像一般自带的linux命令是比较少,tcpdump、telnet登等命令是没有的,这时,定制一套适合自己的基础镜像是必要的,在…...

解决git action定时任务执行失败的方法

为了测试git action定时任务是否有效&#xff0c;你可能选择一个最近的时间测试&#xff0c; 但是发现怎么也触发不了&#xff0c;是不是觉得很苦恼。但是同样的时间&#xff0c;在第二天的定时任务又能成功运行。 这是什么原因&#xff1f; 原因就在上图&#xff0c;git act…...

Node编写重置用户密码接口

目录 前言 定义路由和处理函数 验证表单数据 实现重置密码功能 前言 接前面文章&#xff0c;本文介绍如何编写重置用户密码接口 定义路由和处理函数 路由 // 重置密码的路由 router.post(/updatepwd, userinfo_handler.updatePassword) 处理函数 exports.updatePasswo…...

Day13力扣打卡

打卡记录 奖励最顶尖的 k 名学生(哈希表排序) 用哈希表对所有的positive与negative词条进行映射&#xff0c;然后遍历求解。tip&#xff1a;常用的分割字符串的操作&#xff1a;1.stringstream配合getline() [格式buf, string, char]2.string.find()[find未找到目标会返回npos…...

独立开发者知识贴

有一个github仓库&#xff0c;叫做独立开发变现周刊&#xff0c;很不错&#xff0c;作者能从21年能坚持更新到现在&#xff0c;我很佩服。 它里边有很多独立开发者成功的作品案例&#xff0c;我对这些很感兴趣。 在阅读时&#xff0c;我会问自己以下几个问题&#xff1a; 解…...

软考系列(系统架构师)- 2009年系统架构师软考案例分析考点

试题一 软件架构设计 【问题1】&#xff08;9分&#xff09; 软件质量属性是影响软件架构设计的重要因素。请用200字以内的文字列举六种不同的软件质量属性名称并解释其含义。 常见的软件质量属性有多种&#xff0c;例如性能&#xff08;Performance)、可用性&#xff08;Ava…...

C语言每日一题(21)删除排序数组中的重复项

力扣 26.删除排序数组中的重复项 题目描述 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考…...

如何快速解决d3dcompiler_43.dll缺失问题?五种方法快速解决

在计算机使用过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中之一就是“D3DCompiler_43.dll缺失”。这个错误通常会导致游戏、应用程序或系统无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些修复方案来恢复缺失的文件。本文将介绍五个修复D3DCompi…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...