Redis基础教程(四):redis键(key)

news2025/1/17 3:37:34

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

文章目录

    • 引言
    • 一、键的命名规范
      • 命名建议
      • 案例
    • 二、键的生命周期管理
      • `EXPIRE` 和 `PEXPIRE`
      • `TTL` 和 `PTTL`
      • 案例
    • 三、键的模式匹配
      • `KEYS pattern`
      • `SCAN cursor [MATCH pattern] [COUNT count]`
      • 案例
    • 总结

引言

Redis 的键(Key)是其数据模型的核心组成部分,几乎所有的数据操作都是围绕键来进行的。键在 Redis 中用于唯一标识数据,可以存储各种类型的数据,包括字符串、哈希、列表、集合、有序集合等。本文将深入探讨 Redis 键的管理,包括键的命名规范、键的生命周期管理、键的模式匹配以及 KEYSSCAN 等命令的使用,通过具体的案例来展示键在实际项目中的应用和管理策略。

一、键的命名规范

键的命名规范对于数据的组织和管理至关重要。良好的命名规范可以使数据结构更加清晰,便于维护和查询。

命名建议

  1. 层次结构:使用冒号(:)分隔键的不同部分,形成层次结构。例如,user:123:profile 表示用户ID为123的个人资料。

  2. 可预测性:键的命名应当直观,易于理解和记忆,避免使用模糊或含义不明的缩写。

  3. 唯一性:确保键在全局范围内是唯一的,防止键冲突。

  4. 避免特殊字符:虽然 Redis 支持大多数字符,但建议避免使用空格、换行符等特殊字符,以减少潜在的编码和解析问题。

案例

假设我们正在构建一个电子商务网站,需要存储用户信息、购物车和订单数据。

# 用户信息
redis-cli SET user:123:name "John Doe"
redis-cli SET user:123:email "john.doe@example.com"

# 购物车
redis-cli SADD cart:123 item1
redis-cli SADD cart:123 item2

# 订单
redis-cli HMSET order:123:details status "pending" total "100"

二、键的生命周期管理

Redis 键具有生命周期,可以通过设置过期时间来自动删除不再需要的键,以释放内存。

EXPIREPEXPIRE

EXPIRE 命令用于设置键的生存时间,以秒为单位。PEXPIRE 类似,但时间单位为毫秒。

# 设置键过期时间
redis-cli EXPIRE user:123:session 3600  # 1小时后过期

TTLPTTL

TTL 命令用于查询键的剩余生存时间,以秒为单位。PTTL 类似,但返回毫秒为单位的时间。

# 查询键的剩余生存时间
redis-cli TTL user:123:session

案例

假设我们正在实现一个用户会话管理系统,需要确保用户会话在一段时间后自动失效。

# 设置用户会话
redis-cli SET user:123:session "session_data"
redis-cli EXPIRE user:123:session 1800  # 30分钟后过期

# 查询会话剩余时间
redis-cli TTL user:123:session

三、键的模式匹配

Redis 提供了模式匹配功能,用于查找符合特定模式的键。

KEYS pattern

KEYS 命令用于查找所有符合给定模式的键。然而,KEYS 命令在大数据集上可能会导致阻塞,因此在生产环境中应谨慎使用。

# 查找所有用户相关的键
redis-cli KEYS user:*

SCAN cursor [MATCH pattern] [COUNT count]

SCAN 命令提供了一种迭代查找键的方式,可以避免阻塞问题,更适用于生产环境。

# 使用 SCAN 迭代查找所有用户相关的键
redis-cli SCAN 0 MATCH user:* COUNT 100

案例

假设我们需要清理过期的用户会话,但又不想影响当前的数据库操作。

# 使用 SCAN 查找所有用户会话键
SCAN 0 MATCH user:*:session

# 遍历并删除过期的会话
while true; do
  redis-cli SCAN $cursor MATCH user:*:session COUNT 100 | while read cursor keys; do
    for key in $keys; do
      if [[ $(redis-cli TTL $key) -lt 0 ]]; then
        redis-cli DEL $key
      fi
    done
  done
done

喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

总结

键(Key)是 Redis 数据模型的核心,正确的键管理策略对于构建高效、可维护的 Redis 应用至关重要。通过遵循良好的命名规范、合理设置键的生命周期以及使用适当的命令进行键的查找和清理,可以最大限度地发挥 Redis 的性能和功能。在实际项目中,应根据具体需求灵活应用上述技术和策略,以实现数据的有效管理和利用。

Redis相关文章索引文章链接
Redis基础教程(一):redis配置Redis基础教程(一):redis配置
Redis基础教程(二):redis数据类型Redis基础教程(二):redis数据类型
Redis基础教程(三):redis命令Redis基础教程(三):redis命令

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

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

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

相关文章

TCL中环可转债缩水近90亿:业绩持续承压,百亿自有资金购买理财

《港湾商业观察》廖紫雯 日前,TCL中环新能源科技股份有限公司(以下简称:TCL中环,002129.SZ)可转债总额缩水近90亿,引发市场关注。可转债大幅缩水的另一面,公司此前发布公告披露将使用百亿自有资…

内网渗透学习-杀入内网

1、靶机上线cs 我们已经拿到了win7的shell,执行whoami,发现win7是administrator权限,且在域中 执行ipconfig发现了win7存在内网网段192.168.52.0/24 kali开启cs服务端 客户端启动cs 先在cs中创建一个监听器 接着用cs生成后门,记…

3d打开模型的时候怎么没有灯光?---模大狮模型网

在3D建模与渲染过程中,灯光是至关重要的元素之一,直接影响到最终场景的视觉效果和真实感。然而,有时打开3D模型时可能会发现缺乏适当的灯光设置,这会导致场景显得暗淡或平淡无奇。本文将探讨为何在打开3D模型时可能没有灯光的原因…

【论文速读】|FuzzAug:探索模糊测试作为神经网络测试生成的数据增强

本次分享论文:FuzzAug: Exploring Fuzzing as Data Augmentation for Neural Test Generation 基本信息 原文作者:Yifeng He, Jicheng Wang, Yuyang Rong, Hao Chen 作者单位:University of California, Davis 关键词:软件测试…

springboot 篮球馆管理系统-计算机毕业设计源码21945

目 录 摘要 1 绪论 1.1选题背景 1.2研究意义 1.3论文结构与章节安排 2 篮球馆管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 …

分子AI预测赛笔记

#AI夏令营 #Datawhale #夏令营 Taks1 跑通baseline 根据task1跑通baseline 注册账号 直接注册或登录百度账号,etc fork 项目 零基础入门 Ai 数据挖掘竞赛-速通 Baseline - 飞桨AI Studio星河社区 启动项目 选择运行环境,并点击确定,没…

因果推断前沿研究方向都在这了!

【因果推断】是研究如何从观测数据中识别和估计变量之间因果关系的领域。它在医学、经济学、环境科学等多个领域有着广泛的应用,帮助科学家和决策者理解复杂现象背后的因果机制。通过使用统计方法、机器学习技术以及逻辑推理,因果推断能够揭示变量间的潜…

Frrouting快速入门——OSPF组网(一)

FRR简介 FRR是FRRouting的简称,是一个开源的路由交换软件套件。其作者源自老牌项目quaga的成员,也可以算是quaga的新版本。 使用时一般查看此文档:https://docs.frrouting.org/projects/dev-guide/en/latest/index.html FRR支持的协议众多…

Objection 对命令的批量操作

假定现在需要对好多不同的类进行批量hook,逐个hook非常繁琐,那么可以要将这些hook的类放到一个文件里,并且在这些类的前面加上hook命令,内容如下 使用如下命令执行该文件中的命令 objection -g 测试 explore -c d:/hookData/toHoo…

go sync包(五) WaitGroup

WaitGroup sync.WaitGroup 可以等待一组 Goroutine 的返回,一个比较常见的使用场景是批量发出 RPC 或者 HTTP 请求: requests : []*Request{...} wg : &sync.WaitGroup{} wg.Add(len(requests))for _, request : range requests {go func(r *Reque…

深入解读:如何解决微调扩散模型时微调数据集和训练数据集之间的差距过大问题?

Diffusion Models专栏文章汇总:入门与实战 前言:在微调扩散模型的时候经常会遇到微调数据集和训练数据集之间的差距过大,导致训练效果很差。在图像生成任务中并不明显,但是在视频生成任务中这个问题非常突出。这篇博客深入解读如何…

采用B/S模式 可跨平台使用的数据采集监控平台!

数据采集监控平台是一款专注于工业企业生产设备管理、数据采集、数据分析、数据管理、数据存储、数据传输等的软件系统。系统具备丰富的接口,配置灵活,方便部署,通过采集企业生产设备的数据集中处理,将各个信息孤岛有机连接&#…

2024年上半年数据泄露风险态势报告-百度网盘下载

在快速崛起的数字经济时代,数据作为企业的核心资产及重要战略资源,在高速增长的同时,其背后的数据风险也在不断攀升,日渐复杂的数据泄露形势,已成为企业数字化发展赛道的严重阻碍。 《2024年上半年数据泄露风险态势报…

MySQL 8.0 架构 之 中继日志(Relay log)

文章目录 MySQL 8.0 架构 之 中继日志(Relay log)中继日志(Relay log)概述相关参数参考 【声明】文章仅供学习交流,观点代表个人,与任何公司无关。 来源|WaltSQL和数据库技术(ID:SQLplusDB) MySQL 8.0 OCP …

软件测评中心▏软件验收测试方法和测试内容简析

在当今数字化转型的浪潮下,软件验收测试变得越来越重要。软件验收测试,顾名思义,是对软件进行验收的过程中进行的一项测试。它用于确保软件在满足需求、达到预期效果后才能正式交付给客户使用。软件验收测试是一项全面、系统的测试过程&#…

软信天成:您的数据仓库真的“达标”了吗?

在复杂多变的数据环境中,您的数据仓库是否真的“达标”了?本文将深入探讨数据仓库的定义、合格标准及其与数据库的区别,帮助您全面审视并优化您的数据仓库。 一、什么是数据仓库? 数据仓库是一个面向主题的、集成的、相对稳定的、…

昇思25天学习打卡营第15天|ResNet50图像分类

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) ResNet50图像分类 图像分类是最基础的计算机视觉应用,属于有监督学习类别,如给定一张图像(猫、狗、飞机、汽车等等),判断图像所属的类别。本章将介绍使用ResN…

Spzhi知识付费社区主题免费下载

主题介绍 用typecho打造一款知识付费社区主题,带会员功能,为内容创业者提供知识变现一站式解决方案,让用户沉淀到自己的平台,形成自己的私域流量池,打造流量闭环,零门槛搭建你的移动网络课堂 主题功能 支…

收银系统源码-收银台营销功能-购物卡

1. 功能描述 购物卡:基于会员的电子购物卡,支持设置时效、适用门店、以及可用商品;支持售卖和充值赠送,在收银台可以使用; 2.适用场景 会员充值赠送活动,例如会员充值1000元,赠送面值100元购…

docker初始化运行mysql容器时自动导入数据库存储过程问题

问题:用navicat导出的数据库脚本,在docker初始化运行mysql容器时,导入到存储过程时出错。 ERROR 1064 (42000) at line 2452: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for t…