Redis常用数据结构和应用场景

一、前言

  • Redis提供了多种数据结构,每种结构对应不同的应用场景。
  • 本文对部分常用的核心数据结构和典型使用场景作出介绍。

二、String(字符串)

  • 特点:二进制安全,可存储文本、数字、序列化对象等。
  • 场景
    • 缓存:存储Session、Token、图片地址等。
    • 计数器:文章阅读量(INCR)、秒杀库存(DECR)。
    • 分布式锁:SETNX实现简单锁(需结合过期时间)。
    • 示例命令:
SET user:1001 "{\"name\":\"Alice\",\"age\":25}"
INCR article:1001:views

三、Hash(哈希表)

  • 特点:键值对集合,适合存储对象。
  • 场景
    • 对象存储:用户信息(字段独立更新)、商品详情。
    • 购物车:以用户ID为Key,商品ID为Field,数量为Value。
    • 示例命令:
HSET user:1001 name Alice age 25
HINCRBY cart:1001 product:2001 1

四、List(列表)

  • 特点:双向链表,支持栈/队列操作。
  • 场景: 消息队列:简单任务队列(LPUSH+BRPOP)。
    • 最新动态:朋友圈时间线(存储最新N条动态)。
    • 示例命令:
LPUSH feed:1001 "New post: Redis guide"
LRANGE feed:1001 0 4  # 查看前5条动态

五、Set(集合)

  • 特点:无序且唯一元素,支持交并差运算。
  • 场景
    • 标签系统:用户兴趣标签(共同关注:SINTER)。
    • 抽奖/黑名单:去重存储(如抽奖用户ID)。
    • 示例命令:
SADD user:1001:tags tech database
SINTER user:1001:tags user:1002:tags  # 共同兴趣

六、Sorted Set(有序集合)

  • 特点:元素按Score排序,支持范围查询。
  • 场景
    • 排行榜:游戏积分排名(ZREVRANGE)。
    • 延迟队列:按时间戳排序处理任务。
    • 示例命令:
ZADD leaderboard 5000 "PlayerA" 4800 "PlayerB"
ZREVRANGE leaderboard 0 9 WITHSCORES  # 前10名

七、拓展结构

在这里插入图片描述


八、使用建议

  • 内存优化:小对象优先用Hash(比多个String更省内存)。
  • 性能考量:高频写入场景慎用大Key(如长List/Hash)。
  • 集群限制:集群模式下慎用跨节点操作(如Set交并差)。
  • 通过合理选择数据结构,可以显著提升Redis的性能和资源利用率

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

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

相关文章

spring security oauth2.0的四种模式

OAuth 2.0 定义了 4 种授权模式(Grant Type),用于不同场景下的令牌获取。以下是每种模式的详细说明、适用场景和对比: 一、授权码模式(Authorization Code Grant) 适用场景 • Web 应用(有后端…

Oracle 排除交集数据 MINUS

MINUS 是 Oracle 数据库中的一种集合操作符,用于返回第一个查询结果中存在但第二个查询结果中 不存在 的 唯一行。其核心功能是 排除交集数据,常用于数据差异分析或过滤特定记录 一、核心功能 排除交集:返回第一个查询结果中 不在第二个查询结…

WiFi那些事儿(四)

目录 一、IEEE 802.11ah标准简介 二、IEEE 802.11ah信道特点 三、IEEE 802.11ah传输模式 在WiFi通信领域,信号绕射能力一直是一个关键问题。常规的WiFi设备多工作在2.4GHz和5GHz频段,这些频段的电磁波波长通常小于障碍物尺寸,受电磁波本身…

C++在Linux上生成动态库并调用接口测试

加减乘除demo代码 项目结构 CPP/ ├── calculator.cpp ├── calculator.h ├── main.cpp 头文件 #ifndef CALCULATOR_H #define CALCULATOR_H#ifdef __cplusplus extern "C" {#endifdouble add(double a, double b);double subtract(double a, double b…

离线密码生成器:安全可靠的密码管理解决方案

离线密码生成器:安全可靠的密码管理解决方案 在当今数字时代,我们每天都需要使用各种网站和应用程序,每个账户都需要一个强密码来保护我们的个人信息和隐私。然而,记住多个复杂的密码几乎是不可能的任务。今天,我要向…

ChatRex: Taming Multimodal LLM for Joint Perception and Understanding 论文理解和翻译

一、TL;DR MLLM在感知方面存在不足(远远比不上专家模型),比如Qwen2-VL在coco上recall只有43.9%提出了ChatRex,旨在从模型设计和数据开发两个角度来填补这一感知能力的缺口ChatRex通过proposal边界框输入到LLM中将其转…

自动驾驶技术-相机_IMU时空标定

自动驾驶技术-相机_IMU时空标定 时间延迟 时间延迟 参考链接1、2 相机主要分为全局和卷帘快门相机,从触发到成像的过程包括:复位时间、AE()曝光时间、读出时间 全局快门如下图所示 卷帘快门如下图所示 相机录制视频时,为了保持固定频率&am…

Vue3 + Vite + TS,使用 Web Worker,web worker进阶 hooks

worker 具体通讯方式 1.由 web page 发送消息- worker.postMessage(发送数据) 2.web worker 接收消息并执行相关逻辑- onmessage (e) > { 接收数据并处理逻辑postMessage(传递处理后的数据)} 3.由 web page 监听 worker 消息,包括:- 处理数据的监听…

AIDD-人工智能药物设计-AI 精准预测蛋白质变构位点

Allo-PED: AI 精准预测蛋白质变构位点 目录 Allo-PED 框架融合蛋白质语言模型与结构特征,显著提高了变构位点预测的准确性和泛化能力。EcoFoldDB 利用蛋白质结构信息,为宏基因组提供了精确且可扩展的生态功能注释新方法,显著提升了对未知微生物功能的认知。上下文分子适配(…

1558 找素数

1558 找素数 ⭐️难度:中等 🌟考点:质数 📖 📚 import java.util.Scanner; import java.util.Arrays;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.…

Nacos 提供了哪些服务的保护机制?

当面试官问这个问题时,大家一定要保持头脑清醒,不要被带跑偏了,Nacos 本身的核心定位是服务发现和配置管理中心,它并不直接提供像服务熔断、服务限流、服务降级、请求重试 这类完整的、开箱即用的客户端/网关级服务保护&#xff0…

【家政平台开发(38)】解锁家政平台国际化密码:多语言支持开发实战

> 本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质…

DirectX12 - 基本知识 - 图形驱动的本质

这里是SunshineBooming,GPU公司一枚小小的Driver工程师,主要工作是写DirectX12 Driver,我会持续更新这个DX12 Spec系列,可能比较冷门,但是都是干货和工作中的心得体会,有任何GPU相关的问题都可以在评论区互…

selenium元素获取

from selenium import webdriver from selenium.webdriver.common.by import Bydriver webdriver.Chrome()driver.maximize_window()#最大化窗口 #隐式等待 driver.implicitly_wait(10)#打开网页 driver.get("https://www.zhipin.com/beijing/?kacity-sites-101010100&q…

生物化学笔记:医学免疫学原理15 超敏反应过敏反应(I型[蚊虫叮咬]+II型[新生儿溶血症、突眼型甲亢]+III型+IV型)

超敏反应 每个人都可能发生的过敏问题:被蚊子咬后起包 I型超敏反应 II型超敏反应 新生儿溶血症分为Rh血型不合和ABO血型不合两种情况。Rh血型不合通常从第二胎开始更容易发病,因为母体初次接触Rh阳性胎儿的红细胞后会产生抗D抗体,而这个致敏…

【android bluetooth 框架分析 02】【Module详解 2】【gd_shim_module 模块介绍】

1. 背景 上一章节 我们介绍了 module_t 的 大体框架 ,本节内容我们就选择 我们的 gd_shim_module 模块为例子,具体剖析一下,它里面的逻辑。 static const char GD_SHIM_MODULE[] "gd_shim_module";// system/main/shim/shim.cc …

【包管理器】主流包管理器_对比_应用场景

不定期更新,建议关注收藏点赞。 链接: npm专题 目录 主流包管理器简介对比 主流包管理器简介 主流的包管理器其实有不少,不同语言和平台都有各自的一套系统。 前端(JavaScript/TypeScript) 名称简介开发者特点npmNo…

参照Spring Boot后端框架实现序列化工具类

本文参照Jackson实现序列化工具类,旨在于简化开发 JacksonUtil.class public class JacksonUtil {private JacksonUtil() {}/*** 单例*/private final static ObjectMapper OBJECT_MAPPER;static {OBJECT_MAPPER new ObjectMapper();}private static ObjectMappe…

Rust入门之迭代器(Iterators)

Rust入门之迭代器(Iterators) 本文已同步本人博客网站 本文相关源码已上传Github 前言 迭代器(Iterators)是 Rust 中最核心的工具之一,它不仅是遍历集合的抽象,更是 Rust 零成本抽象(Zero-Co…

若依框架二次开发——RuoYi-AI 本地部署流程

文章目录 项目环境安装后端1. 下载项目2. 使用 IDEA 导入项目3. 配置 Maven4. 配置 Maven settings.xml5. 初始化数据库6. 启动 Redis7. 修改数据库配置8. 启动后端服务安装管理端1. 下载管理端项目2. 安装依赖3. 启动管理端4. 修改管理端配置安装用户端1. 下载用户端项目2. 安…