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

每日八股文6.4补

每日八股-6.4补

  • Redis
    • 1.列举一些 Redis 常用的业务场景
    • 2.看你的项目使用了Redis,你觉得使用 Redis 有哪些主要的优势呢?
    • 3.Redis 支持哪些常用的数据类型呢?/ Redis常用的数据结构了解哪些呢?
    • 4.Redis 的 Hash数据结构了解吗?
    • 5.Redis 的跳表(Skiplist)是一种什么样的结构?

Redis

1.列举一些 Redis 常用的业务场景

在这里插入图片描述

Redis 在很多业务场景中都有广泛的应用,我列举一些比较常用的:

  • 热点数据缓存: 这是 Redis 最常见的应用场景。由于 Redis 速度快,非常适合存储访问频率很高的数据,比如商品信息、用户信息、配置信息等等。
  • 限时类业务的实现: Redis 提供了 expire 命令可以设置 key 的过期时间,这非常适合实现一些限时业务,比如验证码的有效期、优惠券的使用期限、活动倒计时等等。
  • 计数器的实现: Redis 的 incrby 等命令可以实现原子性的递增操作,在高并发场景下非常有用,比如可以用来做秒杀活动的计数、限制某个接口的访问频率等等。
  • 排行榜的实现: Redis 的有序集合(SortedSet)可以根据分数进行排序,非常适合实现各种排行榜功能,比如热门商品排行榜、用户积分排行榜等等。
  • 分布式锁的实现: 可以利用 Redis 的 setnx(set if not exists)命令来实现简单的分布式锁,保证在分布式环境下只有一个客户端能执行特定的操作。

2.看你的项目使用了Redis,你觉得使用 Redis 有哪些主要的优势呢?

首先,redis是基于内存的数据库,所以它的读写速度非常快,可以有效提升程序的性能。
其次,redis支持丰富的数据结构,不仅仅只是键值对,还支持列表,集合,哈希表,有序集合等,这些不同的数据结构可以在不同的业务场景中发挥其独特的优势。
最后,redis有许多功能,比如数据持久化,可以将内存中的数据迁移到磁盘上;主从复制,可以提升读写性能及可用性;redis集群,可以实现更大的数据容量以及更高的并发性能。

3.Redis 支持哪些常用的数据类型呢?/ Redis常用的数据结构了解哪些呢?

在这里插入图片描述

Redis 支持多种数据类型,最常用的有以下五种:

  • String(字符串): 这是最基本的数据类型,可以存储文本、数字或者二进制数据,单个 value 的最大容量是 512MB。常用于缓存对象、常规计数、实现分布式锁等。
  • Hash(哈希): 类似于 Map,存储键值对的集合,适合存储对象,可以方便地对对象的属性进行修改,常用于缓存对象、实现购物车等。
  • List(列表): 是一个有序的字符串列表,支持在列表的两端进行添加和删除操作,常用于实现消息队列等。
  • Set(集合): 是一个无序且唯一的字符串集合,常用于做一些集合操作,比如求交集、并集、差集,可以应用于点赞、共同关注等场景。
  • Zset(有序集合): 在 Set 的基础上为每个元素关联一个分数,可以根据分数进行排序,常用于实现排行榜等。

补充:在 Redis 中,所有的 key 都是二进制安全的 String 类型

4.Redis 的 Hash数据结构了解吗?

Redis 的 Hash 是一种 键值对集合,但与普通的键值对不同的是,Hash 中 每个键对应的值本身又是一个包含多个字段和值的键值对集合。可以把他想成一本书,外层的键对应的是书的名字,全局唯一,我们需要靠他来找到这本书;内层的键值对就像是书内的各个章节及对应的内容。

Redis 的 Hash 特点如下:

  • 适合存储小数据:Hash 特别适合存储具有多个相关属性的小对象。
  • 使用哈希表实现:底层通常使用哈希表(或压缩列表)实现,能够在内存中高效地存储和操作。
  • 支持快速的字段操作:Redis 提供了针对 Hash 中字段的快速增、删、改、查操作,例如 HGET、HSET、HDEL 等,这使得它非常适合存储和管理对象的属性。

5.Redis 的跳表(Skiplist)是一种什么样的结构?

Redis 跳表:多级跳跃的有序链表

  1. 本质: 一种有序链表的升级版。
  2. 核心思想: 空间换时间。
  3. 如何优化: 在普通链表上加了多层“索引”。
    • 底层是完整数据(有序链表)。
    • 上层是稀疏的、跳跃式的索引。
    • 层级越高,跳过的节点越多。
  4. 查找/增删: 从最顶层索引开始“跳”,快速定位,平均时间复杂度接近 O(logN)。
  5. 关键组成:
    • 节点: 每个节点包含 数据、分值、和最重要的 层 数组(多个向前指针)。
    • 层数组长度: 随机生成(决定节点参与多少层索引)。
  6. Redis 应用: 主要用于实现 ZSet(有序集合)。
http://www.xdnf.cn/news/877573.html

相关文章:

  • Day12
  • GQA(Grouped Query Attention):分组注意力机制的原理与实践《二》
  • 如何选择合适的分库分表策略
  • 前端表单验证进阶:如何使用 jQuery.validator.addMethod() 编写自定义验证器(全是干货,建议收藏)
  • 用布局管理器grid实现计算机界面
  • Python爬虫爬取天猫商品数据,详细教程【Python经典实战项目】
  • VBA中类的解读及应用第二十四讲:把源数据赋给类利用类完成查找
  • 【AI News | 20250604】每日AI进展
  • Markdown基础(1.2w字)
  • OPC UA 知识概述
  • 行业年终工作总结汇报PPT模版分享
  • 并发编程的问题与管程
  • LangChain深度解析:LLM应用开发利器
  • Redis常见使用场景解析
  • 【C语言个数最大最多】2022-4-1
  • 网络攻防技术十二:社会工程学
  • Mysql选择合适的字段创建索引
  • Java Lombok @Data 注解用法详解
  • 量子通信:从科幻走向现实的未来通信技术
  • 四、Sqoop 导入表数据子集
  • 使用C++调用python库
  • 东西方艺术的对话:彰显中国传统艺术之美与价值
  • 主流Agent开发平台学习笔记:扣子罗盘coze loop 功能拆解
  • Vue插件
  • 租物理服务器,如何避开 “高价陷阱”
  • MES管理系统的核心数据采集方式有哪些
  • Linux 环境下 PPP 拨号的嵌入式开发实现
  • CMake在VS中使用远程调试
  • python实现合并多个dot文件
  • linux系统--iptables实战案例