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

高级java每日一道面试题-2024年10月11日-数据库篇[Redis篇]-Redis都有哪些使用场景?

如果有遗漏,评论区告诉我进行补充

面试官: Redis都有哪些使用场景?

我回答:

Redis 是一个开源的、基于键值对的数据结构存储系统,,它支持多种数据类型,包括字符串、散列、列表、集合和有序集合。它可以用作数据库、缓存和消息中间件。由于其高性能、丰富的数据结构支持以及多种高级特性,Redis 在许多场景中都非常有用。以下是 Redis 的一些主要使用场景及其详解:

1. 缓存

  • 场景:提高应用程序的读取性能,减少数据库负载。
  • 详解
    • 页面缓存:将频繁访问的 HTML 页面或部分页面内容存储在 Redis 中,以减少数据库查询和渲染时间。
    • 对象缓存:将经常访问的对象(如用户信息、商品详情等)存储在 Redis 中,减少对后端数据库的访问。
    • 会话缓存:存储用户的会话信息,实现无状态的 Web 服务。
    • 热点数据缓存:对于那些被频繁访问的数据,可以将其存储在 Redis 中,避免每次都从数据库中读取。
    • 验证码,短信验证码缓存:Redis支持设置数据的过期时间,自动清理过期数据。非常适合存储临时数据,如验证码、短信验证码等。
    • 全局ID管理:Redis的incrby方法可以利用其原子性来生成全局唯一的ID。这在分库分表的场景中特别有用,可以一次性获取一段ID,然后分配给不同的数据库或表。
    • 时间序列数据:Redis可以存储时间序列数据,用于监控和分析。这使得Redis在需要处理时间序列数据的场景中(如金融、物联网等领域)具有广泛的应用前景。
    • 商品筛选与标签管理:Redis的集合(Set)数据结构可以用于实现商品筛选和标签管理功能。通过利用集合的差集、交集和并集操作,可以方便地实现商品的筛选和推荐。
    • 数据结构支持:Redis提供的丰富数据结构使得它适用于各种复杂的数据模型和业务逻辑,如社交网络的朋友关系、兴趣小组等。

2. 实时计数器和统计

  • 场景:需要实时更新和查询统计数据的应用,如网站访问量、在线用户数等。
  • 详解
    • 使用 Redis 的 INCRDECR 命令来实现高效的计数器。这使得Redis非常适合实现各种计数器功能,如文章的阅读量、微博点赞数等。这些计数器可以允许一定的延迟,先写入Redis再定时同步到数据库。
    • 利用 HyperLogLog 数据结构进行近似去重统计,适用于大规模数据集。
    • 使用 Sorted Set 来维护排行榜、热门列表等。
    • 位运算统计:Redis的String类型支持bitcount操作,可以对二进制位进行统计。这使得Redis可以用于大数据量的统计场景,如在线用户统计、留存用户统计等。

3. 消息队列

  • 场景:异步处理任务、解耦系统组件、平滑流量峰值。
  • 详解
    • 发布/订阅模式:使用 PUBLISHSUBSCRIBE 命令实现简单的消息传递机制。
    • 列表作为队列:使用 LPUSHRPOPBRPOP 命令实现先进先出(FIFO)的消息队列。
    • 延迟队列:结合 ZSETEXPIRE 命令实现具有延迟特性的消息队列。

4. 分布式锁

  • 场景:在分布式环境中确保资源的互斥访问。
  • 详解
    • 使用 SETNX 命令实现简单的分布式锁。
    • 结合 EXPIRE 命令为锁设置过期时间,防止死锁。
    • 使用 Redlock 算法实现更可靠的分布式锁。
    • 可以使用更高级的Redis客户端(如Redisson)来提供更强大和灵活的分布式锁功能。

5. 排行榜和实时推荐系统

  • 场景:维护动态变化的排行榜、推荐系统中的热门项目。
  • 详解
    • 使用 Sorted Set 来存储和排序元素,每个元素都有一个分数,可以根据分数进行排名。
    • 通过 ZADDZREMZRANGE 等命令来操作排行榜。
    • 用于推荐系统的用户行为记录和热门项目推荐。存储用户的行为数据和偏好,从而实现实时推荐系统。

6. 会话管理

  • 场景:存储和管理用户的会话信息。
  • 详解
    • 使用 String 类型存储会话数据,存储用户的会话信息,如登录状态、购物车内容等。这些信息通常是临时的,且需要频繁读写,因此非常适合存储在Redis中。
    • 设置过期时间,自动清理过期的会话。
    • 支持集群环境下的会话共享。

7. 地理位置应用

  • 场景:基于地理位置的服务,如附近的人、附近的商家等。
  • 详解
    • 使用 GEO 命令(如 GEOADDGEORADIUS)来存储和查询地理位置数据。
    • 支持地理坐标系,可以计算两点之间的距离或查找指定范围内的点。

8. 限流与速率限制

  • 场景:控制 API 请求的频率,防止恶意攻击或过度使用。
  • 详解
    • 使用 INCR 命令配合 EXPIRE 来实现简单的计数器限流。
    • 使用 Lua 脚本实现更复杂的限流逻辑。
    • 结合 Sorted Set 实现滑动窗口限流算法。
    • 限流: Redis也可以用于实现限流功能,防止系统过载。通过以访问者的IP和其他信息作为key,访问一次增加一次计数,当计数超过设定的阈值时,就拒绝后续的访问请求。

9. 分布式事务

  • 场景:在分布式系统中保证多个操作的一致性。
  • 详解
    • 使用 MULTIEXECDISCARDWATCH 命令实现事务。
    • WATCH 可以监控一个或多个键,如果这些键在事务执行前发生变化,则事务会被放弃。

10. 数据持久化

  • 场景:需要将数据持久化到磁盘,以便在重启后恢复数据。
  • 详解
    • RDB (Redis Database):定期将内存中的数据快照保存到磁盘文件中。
    • AOF (Append Only File):记录每个写操作的日志,重启时重新执行这些日志来恢复数据。

11. 分布式系统中的协调器

  • 场景:在分布式系统中协调不同节点的状态。
  • 详解
    • 使用 Pub/Sub 模式进行节点间的消息通信。
    • 使用 Sorted Set 维护节点的心跳信息,实现节点健康检查。
    • 使用 Set 维护节点集合,实现节点的动态加入和退出。
    • 任务调度: 通过利用Redis的键过期策略和定时任务框架(如Quartz等)的结合使用,可以实现灵活的任务调度功能。

12. 数据共享

  • 场景:在微服务架构中,Redis可以作为服务间共享数据的媒介。
  • 详解
    • 通过利用Redis的分布式特性和高性能读写能力,可以实现微服务之间的数据共享和同步。
    • 综上所述,Redis在Java高级面试中具有广泛的应用场景和重要的价值。掌握Redis的这些使用场景和相关技术点,对于提升Java开发能力和应对面试挑战具有重要意义。

总结

Redis 的应用场景非常广泛,从缓存、消息队列到分布式锁、排行榜等。它的高性能和丰富的数据结构使其成为许多现代应用的重要组成部分。选择合适的使用场景和配置可以显著提升系统的性能和可靠性

相关文章:

高级java每日一道面试题-2024年10月11日-数据库篇[Redis篇]-Redis都有哪些使用场景?

如果有遗漏,评论区告诉我进行补充 面试官: Redis都有哪些使用场景? 我回答: Redis 是一个开源的、基于键值对的数据结构存储系统,,它支持多种数据类型,包括字符串、散列、列表、集合和有序集合。它可以用作数据库、缓存和消息中间件。由于…...

0047__【python打包分发工具】setuptools详解

【python打包分发工具】setuptools详解-CSDN博客...

自定义拦截器处理token

目录 1、WebConfig 配置类 2、TSUserContext 把用户信息放到context中 3、自定义拦截器 4、在controller中可以使用 5、参考链接 1、WebConfig 配置类 @Configuration public class WebConfig implements WebMvcConfigurer {@Autowiredprivate AccessControlInterceptor …...

Scrapy | 使用Scrapy进行数据建模和请求

scrapy数据建模与请求 数据建模1.1 为什么建模1.2 如何建模1.3如何使用模板类1.4 开发流程总结 目标: 1.应用在scrapy项目中进行建模 2.应用构造Request对象,并发送请求 3.应用利用meta参数在不同的解析函数中传递数据 数据建模 | 通常在做项目的过程中…...

学习笔记——交换——STP(生成树)基本概念

三、基本概念 1、桥ID/网桥ID (Bridege ID,BID) 每一台运行STP的交换机都拥有一个唯一的桥ID(BID),BID(Bridge ID/桥ID)。在STP里我们使用不同的桥ID标识不同的交换机。 (2)BID(桥ID)组成 BID(桥ID)组成(8个字节):由16位(2字节)的桥优先级…...

机器学习笔记-2

文章目录 一、Linear model二、How to represent this function三、Function with unknown parameter四、ReLU总结、A fancy name 一、Linear model 线性模型过于简单,有很大限制,我们需要更多复杂模式 蓝色是线性模型,线性模型无法去表示…...

SpringSecurity(一)——认证实现

一、初步理解 SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。 当前系统中SpringSecurity过滤器链中有哪些过滤器及它们的顺序。 核心过滤器: (认证)UsernamePasswordAuthenticationFilter:负责处理…...

VMWare NAT 模式下 虚拟机上不了网原因排查

vmware 按照了Linux之后 无法上网,搞定后,记录一些信息。 window有两个虚拟网卡 VMnet1 对应的是 Host-Only(仅主机模式) VMnet8 对应的是 NAT(网络地址转换模式) 在NAT模式中,需要设置NAT和D…...

R语言手工实现主成分分析 PCA | 奇异值分解(svd) 与PCA | PCA的疑问和解答

几个问题: pca可以用相关系数矩阵做吗?效果比协方差矩阵比怎么样?pca做完后变量和样本的新坐标怎么旋转获得?pca做不做scale和center对结果有影响吗?pca用因子分解和奇异值分解有啥区别?后者怎么获得变量和样本的新坐标?1. 用R全手工实现 PCA(对比 prcomp() ) 不借助包…...

第三届OpenHarmony技术大会在上海成功举办

10月12日,以“技术引领筑生态,万物智联创未来”为主题的第三届OpenHarmony技术大会(以下简称“大会”)在上海成功举办。本次大会由OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群技术指导委员会&…...

数字化:IT部门主导还是业务部门主导?

在这个瞬息万变的数字化时代,企业如同在大海中航行的小船,面对波涛汹涌的市场竞争,数字化转型已成为生存的必经之路。然而,在这条充满挑战的航线上,常常会出现一个让人纠结的问题:数字化转型究竟应该由IT部…...

MySQL表的基本查询下/分组聚合统计

1,update 对查询到的结果进行列值更新,可以和older by,where,limit合并使用,为了方便讲解,将会以题目练习的方式进行说明: 1,将孙悟空同学的数学成绩变更为 80 分 本道题和where联…...

条款3: 理解decltype

目录 一、decltype + 变量 二、decltype + 表达式 三、decltype 使用场景 一、decltype + 变量 🥭 所有的信息都会保留,数组和函数也不会退化 const int &&carref = std::move(ca); decltype(carref) bb; // bb推导为const int &&,不会被忽略掉co…...

TCP:过多的TIME_WAIT

过多的TIME_WAIT 线上问题紧急处理方式tcp_tw_reuse启用主要特点:源码 线上问题 线上机器出现了几万个TIME_WAIT,怎么办? 紧急处理方式 tcp_tw_reuse 启用 默认情况下tcp_tw_reuse是关闭状态,使用sysctl -w net.ipv4.tcp_tw_…...

化学元素分子量、氧化物系数计算python类

在网上找到的分子量计算类,做了少量修改,有原子量、分子量、氧化物系数的计算。 import re wt_dict{ #该原子量数据从CRC手册第95版提取。"H": 1.008,"He": 4.002602,"Li": 6.94,"Be": 9.0121831,"B": 10.…...

torch.utils.data.DataLoader参数介绍

torch.utils.data.DataLoader 是 PyTorch 用于加载数据的重要工具,特别是在深度学习模型训练中。它可以高效地处理大规模数据集,并支持多线程数据加载。以下是 DataLoader 的关键参数及其功能: 主要参数 dataset: 要加载的数据集,可以是 PyTorch 自带的 torch.utils.data.…...

echarts 入门

工作中第一次碰到echarts&#xff0c;当时有大哥。二进宫没办法&#xff0c;只能搞定它。 感觉生活就是这样&#xff0c;不能解决的问题总是会反复出现。通过看视频、查资料&#xff0c;完成了工作要求。写一篇Hello World&#xff0c;进行备查。 基本使用 快速上手 <!DO…...

WPF实现类似网易云音乐的菜单切换

这里是借助三方UI框架实现了&#xff0c;感兴趣的小伙伴可以看一下。 深色模式&#xff1a;​ 浅色模式&#xff1a; ​这里主要使用了以下三个包&#xff1a; MahApps.Metro&#xff1a;UI库&#xff0c;提供菜单导航和其它控件​​​​​​​ 实现步骤&#xff1a;1、使用B…...

OpenCV人脸检测与识别:构建智能识别系统

在当今科技日新月异的时代&#xff0c;人脸识别技术以其独特的便利性和安全性&#xff0c;在各个领域都展现出了巨大的应用潜力。从智能手机的面部解锁&#xff0c;到机场的自动安检&#xff0c;再到商场的顾客行为分析&#xff0c;人脸识别技术无处不在。本文将深入探讨如何使…...

H5 Canvas 举牌小人

之前看到这种的举牌小人的图片觉得很有意思&#xff0c;最近有时间所以就尝试写写看。 在线链接 https://linyisonger.github.io/H5.Examples/?name./080.Canvas%20%E4%B8%BE%E7%89%8C%E5%B0%8F%E4%BA%BA.html 生成效果 实现代码 <!DOCTYPE html> <html lang"…...

亚马逊卖家公开信息数据提取:反爬攻防战与 Python 批量采集实战

摘要&#xff1a; 批量获取亚马逊&#xff08;Amazon&#xff09;第三方卖家的商业名称、信用代码和注册地址等信息&#xff0c;对于跨境 B2B 拓客和供应链分析具有重要意义。然而&#xff0c;亚马逊的 Cloudflare 盾和 Robot 验证码构成了极高的反爬门槛。本文将深度解析亚马逊…...

户外实用|艾迪欧 R6000 测评 —— 户外 / 自驾 / 露营的通讯好搭档

户外出行&#xff0c;通讯工具的核心是稳定、清晰、耐用、续航久、功能全。艾迪欧 R6000 作为一款兼顾专业与户外的 DMR 对讲机&#xff0c;全频段覆盖、双模通讯、自定义功能、长续航&#xff0c;完美适配自驾、露营、登山、越野等户外场景&#xff0c;是户外爱好者的靠谱通讯…...

Mysql:事务管理(中)

在前面的章节中&#xff0c;我们提到了 MVCC&#xff08;多版本并发控制&#xff09;&#xff0c;它巧妙地通过“版本快照”解决了“读-写”冲突&#xff0c;实现了非阻塞读。但如果两个事务同时执行 UPDATE 操作修改同一行数据&#xff0c;即 写-写&#xff08;Write-Write&am…...

告别CAJ格式困扰:3分钟学会用开源工具将知网文献转为PDF

告别CAJ格式困扰&#xff1a;3分钟学会用开源工具将知网文献转为PDF 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换&#xff0c;成功与否&#xff0c;皆是玄学。 项目地址: https://gitcode.com/…...

Postgresql基础实践教程(九)

⭐️⭐️⭐️⭐️⭐️ 完整数据详见 练习数据免费 ⭐️⭐️⭐️⭐️⭐️ 七十二、WITH查询&#xff08;公用表表达式CTE&#xff09; 1. SELECT 中的 WITH 2. 递归查询 3. 公用表表达式的物化 4. WITH中的数据修改语句 WITH提供了一种在主查询中写辅助语句的方法。这些语…...

基于Netburner NANO54415构建工业级嵌入式Web服务器:从硬件选型到广域监控实战

1. 项目概述&#xff1a;一个为广域与本地监控而生的嵌入式Web服务器如果你正在寻找一个能部署在野外、工厂角落或者任何需要远程数据采集与控制场景下的嵌入式Web服务器方案&#xff0c;并且对市面上那些要么性能孱弱、要么开发门槛极高的开发板感到厌倦&#xff0c;那么这个基…...

深度解析HS2-HF Patch:从技术框架到创作工具链的完整升级方案

深度解析HS2-HF Patch&#xff1a;从技术框架到创作工具链的完整升级方案 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾因Honey Select 2的原版体验受…...

总线式智能提示灯系统设计:从恒流驱动到模块化架构

1. 项目概述&#xff1a;从传统到智能的剧场提示灯系统革新在剧场、演播室或者大型活动现场的后台&#xff0c;如果你待过&#xff0c;一定对那套“红灯停&#xff0c;绿灯行”的提示灯系统不陌生。导演或舞台监督通过对讲机喊“Standby”&#xff08;准备&#xff09;&#xf…...

告别鼠标点击,微博图片批量下载的轻松方案

告别鼠标点击&#xff0c;微博图片批量下载的轻松方案 【免费下载链接】weiboPicDownloader Download weibo images without logging-in 项目地址: https://gitcode.com/gh_mirrors/we/weiboPicDownloader 还记得那个周末的下午吗&#xff1f;你喜欢的博主发布了九宫格美…...

基于PGA2311的树莓派Hi-Fi模拟音量控制器设计与实现

1. 项目概述&#xff1a;为树莓派DAC打造的高品质模拟音量控制器玩过树莓派音频播放器的朋友都知道&#xff0c;用上像PCM1794A这类高性能DAC芯片后&#xff0c;音质确实能上一个台阶&#xff0c;但有个不大不小的麻烦&#xff1a;这类芯片本身不带音量控制。软件调音量&#x…...