当前位置: 首页 > 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(有序集合)。

相关文章:

  • Fluence推出“Pointless计划”:五种方式参与RWA算力资产新时代
  • 更新 Docker 容器中的某一个文件
  • spring-ai入门
  • springboot ErrorController getErrorPath() 版本变迁
  • 【Spark征服之路-2.1-安装部署Spark(一)】
  • 电力系统时间同步系统之二
  • 振动力学:欧拉-伯努利梁的弯曲振动(考虑轴向力作用)
  • 供应商管理系统
  • 【vibe coding解决100个问题】开发CRM管理系统, Augment/windsurf/bolt.new哪家强?
  • 解码高质量数据集炼金术,打造AI时代的超级燃料
  • NTC热敏电阻
  • OD 算法题 B卷【阿里巴巴找黄金宝箱(V)】
  • RP2040 arduino使用内置USB串口 发送数据串口助手接收不到数据原因
  • 行为型-模板模式
  • LINUX64 FTP 1; rsync inotify.sh脚本说明
  • 【统计方法】蒙特卡洛
  • 分析Web3下数据保护的创新模式
  • 05.字母异位词分组
  • 量子通信:从科幻走向现实的未来通信技术
  • 线性模型选择中容易被忽视的关键洞察
  • 政府网站建设申请报告/自媒体推广渠道
  • 昆明靠谱的网站开发公司有哪些/网络广告的形式有哪些
  • 做家乡特产的网站/seo的培训网站哪里好
  • 网站服务器能更换吗/深圳网站搜索优化工具
  • 徐州好点的做网站的公司有哪些/一键seo提交收录
  • 织梦做网站简单吗/网站seo优化步骤