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

Redis常用数据类型及其应用案例

文章目录

  • Redis常用数据类型及其应用案例
    • 1. 字符串(String)
      • 1.1 简介
      • 1.2 应用案例
        • 1.2.1 缓存
        • 1.2.2 计数器
    • 2. 哈希(Hash)
      • 2.1 简介
      • 2.2 应用案例
        • 2.2.1 存储用户信息
        • 2.2.2 购物车
    • 3. 列表(List)
      • 3.1 简介
      • 3.2 应用案例
        • 3.2.1 消息队列
        • 3.2.2 最新消息列表
    • 4. 集合(Set)
      • 4.1 简介
      • 4.2 应用案例
        • 4.2.1 标签系统
        • 4.2.2 好友关系
    • 5. 有序集合(Sorted Set)
      • 5.1 简介
      • 5.2 应用案例
        • 5.2.1 排行榜
        • 5.2.2 时间轴
    • 6. 总结


Redis常用数据类型及其应用案例

Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能键值存储系统。它支持多种数据类型,适用于各种应用场景。本文将介绍Redis中常用的数据类型,并通过实际案例展示它们的应用。

1. 字符串(String)

1.1 简介

字符串是Redis中最基本的数据类型,可以存储文本、数字或二进制数据。每个键最多可以存储512MB的数据。

1.2 应用案例

1.2.1 缓存

字符串常用于缓存数据,例如缓存用户信息、页面内容等。

# 设置缓存
SET user:1 "{'name': 'Alice', 'age': 25}"# 获取缓存
GET user:1

在这里插入图片描述

1.2.2 计数器

字符串还可以用作计数器,例如统计网站的访问量。

# 初始化计数器
SET visit_count 0# 增加计数
INCR visit_count# 获取当前计数
GET visit_count

在这里插入图片描述

2. 哈希(Hash)

2.1 简介

哈希是一个键值对集合,适合存储对象。每个哈希可以存储多达2^32 - 1个字段-值对。

2.2 应用案例

2.2.1 存储用户信息

哈希适合存储对象的多个属性,例如用户信息。

# 设置用户信息
HSET user:1 name "Alice"
HSET user:1 age 25
HSET user:1 email "alice@example.com"# 获取用户信息
HGET user:1 name
HGETALL user:1

在这里插入图片描述
在这里插入图片描述

2.2.2 购物车

哈希可以用来存储用户的购物车信息。

# 添加商品到购物车
HSET cart:1 item1 2
HSET cart:1 item2 1# 获取购物车内容
HGETALL cart:1

3. 列表(List)

3.1 简介

列表是一个有序的字符串集合,可以在列表的两端进行插入和删除操作。列表的最大长度为2^32 - 1。

3.2 应用案例

3.2.1 消息队列

列表可以用作消息队列,实现生产者-消费者模式。

# 生产者:添加消息到队列
LPUSH message_queue "Task 1"
LPUSH message_queue "Task 2"# 消费者:从队列中获取消息
RPOP message_queue

在这里插入图片描述
在这里插入图片描述

3.2.2 最新消息列表

列表可以用来存储最新的消息或动态。

# 添加最新消息
LPUSH latest_messages "Message 1"
LPUSH latest_messages "Message 2"# 获取最新的5条消息
LRANGE latest_messages 0 4

添加4、5后,1已被消费
在这里插入图片描述

4. 集合(Set)

4.1 简介

集合是一个无序的、不重复的字符串集合。集合的最大成员数为2^32 - 1。

4.2 应用案例

4.2.1 标签系统

集合可以用来存储对象的标签。

# 添加标签
SADD post:1:tags "Redis"
SADD post:1:tags "Database"# 获取所有标签
SMEMBERS post:1:tags

在这里插入图片描述

4.2.2 好友关系

集合可以用来存储用户的好友关系。

# 添加好友
SADD user:1:friends user:2
SADD user:1:friends user:3# 获取共同好友(交集)
SINTER user:1:friends user:2:friends

在这里插入图片描述
在这里插入图片描述

5. 有序集合(Sorted Set)

5.1 简介

有序集合是一个有序的、不重复的字符串集合。
元素唯一性:有序集合中的元素是唯一的,不允许重复。
分数排序:每个元素都关联一个分数(score),Redis 根据分数对元素进行排序。
高效操作:支持高效的插入、删除和范围查询操作。

5.2 应用案例

5.2.1 排行榜

有序集合可以用来实现排行榜功能。

# 添加分数
ZADD leaderboard 100 "Alice"
ZADD leaderboard 200 "Bob"# 获取排行榜前3名
ZREVRANGE leaderboard 0 2 WITHSCORES

在这里插入图片描述
在这里插入图片描述

5.2.2 时间轴

有序集合可以用来存储按时间排序的事件。

# 添加事件
ZADD timeline 1633072800 "Event 1"
ZADD timeline 1633076400 "Event 2"# 获取最近的事件
ZRANGE timeline 0 -1 WITHSCORES

在这里插入图片描述

6. 总结

Redis提供了丰富的数据类型,每种类型都有其独特的应用场景。通过合理选择和使用这些数据类型,可以极大地提高应用的性能和灵活性。本文介绍了字符串、哈希、列表、集合和有序集合的常见应用案例,希望能帮助读者更好地理解和应用Redis。

在实际开发中,应根据具体需求选择合适的数据类型,并注意数据的一致性和性能优化。通过不断实践和探索,可以更好地发挥Redis的优势,构建高效、可靠的应用系统。

相关文章:

Redis常用数据类型及其应用案例

文章目录 Redis常用数据类型及其应用案例1. 字符串(String)1.1 简介1.2 应用案例1.2.1 缓存1.2.2 计数器 2. 哈希(Hash)2.1 简介2.2 应用案例2.2.1 存储用户信息2.2.2 购物车 3. 列表(List)3.1 简介3.2 应用…...

kafka数据拉取和发送

文章目录 一、原生 KafkaConsumer1、pom文件引入kafka2、拉取数据3、发送数据二、在spring boot中使用@KafkaListener1、添加依赖2、application.yml3、消息拉取:consumer4、自定义ListenerContainerFactory5、消息发送:producer6、kafka通过clientId鉴权时的鉴权失败问题一、…...

LLM全栈框架完整分类清单(预训练+微调+工具链)

一、预训练框架 1. 大规模分布式训练框架 框架名称核心能力GitHub地址Megatron-LM3D并行训练、FlashAttention支持、Transformer架构优化(NVIDIA生态)NVIDIA/Megatron-LMDeepSpeedZeRO优化系列、3D并行、RLHF全流程支持(微软生态&#xff09…...

蓝桥杯备考:贪心算法之矩阵消除游戏

这道题是牛客上的一道题,它呢和我们之前的排座位游戏非常之相似,但是,排座位问题选择行和列是不会改变元素的值的,这道题呢每每选一行都会把这行或者这列清零,所以我们的策略就是先用二进制把选择所有行的情况全部枚举…...

【Matlab仿真】Matlab Function中如何使用静态变量?

背景 根据Simulink的运行机制,每个采样点会调用一次MATLAB Function的函数,两次调用之间,同一个变量的前次计算的终值如何传递到当前计算周期来?其实可以使用persistent变量实现函数退出和进入时内部变量值的保持。 persistent变…...

DeepSeek 提示词:高效的提示词设计

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

深入学习Java中的Lambda表达式

深入学习Java中的Lambda表达式 自Java 8引入以来,Lambda表达式彻底改变了Java的编程风格,让代码变得更加简洁、易读,尤其是在函数式编程的场景中。接下来,我们将深入探讨Lambda表达式的语法、原理以及实际应用,帮助你…...

1.2 AI 量化炒股的起源与发展

**定性价值**:AI量化炒股通过算法模型实现投资决策自动化,显著提升交易效率与风险控制能力,打破传统人工交易的主观性与延迟性,推动金融科技向智能化、数据驱动方向迭代,具有颠覆传统投资模式的战略意义。 **定量价值…...

计算机单位之详解——存储单位Byte 网络传输单位bps 视频码率单位bps

前言: 计算机里面单位有点复杂,容易混淆,很多时候混起来就容易概念不理解,包括一些小问题,比如说:为什么我买了1T硬盘,实际存在虚标。为什么所谓的千兆宽带,下载起来没有1G每秒&…...

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决 问题描述 在使用 IntelliJ IDEA 开发 Spring Boot 应用时,有时即使关闭了应用,程序仍然占用端口(例如:4001 端口)。这会导致重新启动应用时出现端口被占用的错误&a…...

deepseek清华大学第二版 如何获取 DeepSeek如何赋能职场应用 PDF文档 电子档(附下载)

deepseek清华大学第二版 DeepSeek如何赋能职场 pdf文件完整版下载 https://pan.baidu.com/s/1aQcNS8UleMldcoH0Jc6C6A?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/3ee62050a2ac...

【python随手记】——读取文本文件内容转换为json格式

文章目录 前言一、TXT文件转换为JSON数组1.txt文件内容2.python代码3.输出结果 二、TXT文件转换为JSON对象1.txt文件2.python代码3.输出结果 前言 场景:用于读取包含空格分隔数据的TXT文件,并将其转换为结构化JSON文件 一、TXT文件转换为JSON数组 1.tx…...

k8s集群3主5从高可用架构(kubeadm方式安装k8s)

关键步骤说明 环境准备阶段 系统更新:所有节点执行yum/apt update确保软件包最新时间同步:通过ntpdate time.windows.com或部署NTP服务器网络规划:明确划分Service网段(默认10.96.0.0/12)和Pod网段(如Flann…...

基于 sklearn 的均值偏移聚类算法的应用

基于 sklearn 的均值偏移聚类算法的应用 在机器学习和数据挖掘中,聚类算法是一类非常重要的无监督学习方法。它的目的是将数据集中的数据点划分为若干个类,使得同一类的样本点彼此相似,而不同类的样本点相互之间差异较大。均值偏移聚类&…...

三、大模型微调的多种方法与应用场景

详解大模型微调的多种方法与应用场景 随着大模型的不断发展,如何有效地微调这些庞大的预训练模型以适应特定任务成为了研究和应用中的一个重要问题。大模型微调不仅能够提高任务性能,还能在不同的业务需求中提升模型的适应性。在本文中,我们…...

第2课 树莓派镜像的烧录

树莓派的系统通常是安装在SD卡上的‌。SD卡作为启动设备,负责启动树莓派并加载操作系统。这种设计使得树莓派具有便携性和灵活性,用户可以通过更换SD卡来更换操作系统或恢复出厂设置。 烧录树莓派的镜像即是将树莓派镜像烧录到SD卡上,在此期间会格式化SD卡,如果SD卡…...

SQL之order by盲注

目录 一.order by盲注的原理 二.注入方式 a.布尔盲注 b.时间盲注 三.防御 一.order by盲注的原理 order by子句是用于按指定列排序查询结果,列名或列序号皆可。 order by 后面接的字段或者数字不一样,那么这个数据表的排序就会不同。 order by 盲…...

AI大模型(四)基于Deepseek本地部署实现模型定制与调教

AI大模型(四)基于Deepseek本地部署实现模型定制与调教 DeepSeek开源大模型在榜单上以黑马之姿横扫多项评测,其社区热度指数暴涨、一跃成为近期内影响力最高的话题,这个来自中国团队的模型向世界证明:让每个普通人都能…...

java后端开发day19--学生管理系统升级

(以下内容全部来自上述课程) 1.要求及思路 1.总体框架 2.注册 3.登录 4.忘记密码 2.代码 1.javabean public class User1 {private String username;private String password;private String personID;private String phoneNumber;public User1() {…...

MFC文件和注册表的操作

MFC文件和注册表的操作 日志、操作配置文件、ini、注册表、音视频的文件存储 Linux下一切皆文件 C/C操作文件 const char* 与 char* const const char* 常量指针,表示指向的内容为常量。指针可以指向其他变量,但是内容不能再变了 char szName[6]&qu…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...