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

news/2024/7/7 20:46:43 标签: redis, 缓存, 数据库

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
💝💝💝如有需要请大家订阅我的专栏【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.niftyadmin.cn/n/5535274.html

相关文章

cpu,缓存,辅存,主存之间的关系及特点

关系图 示意图: ------------------- | CPU | | ------------- | | | 寄存器 | | | ------------- | | | L1缓存 | | | ------------- | | | L2缓存 | | | ------------- | | | L3缓存 | | | ------------- | ----…

详细分析Oracle修改默认的时间格式(四种方式)

目录 前言1. 会话级别2. 系统级别3. 环境配置4. 函数格式化5. 总结 前言 默认的日期和时间格式由参数NLS_DATE_FORMAT控制 如果需要修改默认的时间格式,可以通过修改会话级别或系统级别的参数来实现 1. 会话级别 在当前会话中设置日期格式,这只会影响…

【嵌入式DIY实例-ESP8266篇】-LCD ST7735显示网络时间

LCD ST7735显示网络时间 文章目录 LCD ST7735显示网络时间1、硬件准备2、代码实现本文将介绍如何使用 ESP8266 NodeMCU Wi-Fi 板实现互联网时钟,其中时间和日期显示在 ST7735 TFT 显示屏上。 ST7735 TFT是一款分辨率为128160像素的彩色显示屏,采用SPI协议与主控设备通信。 1…

【问题解决】plt.show()画出来的图像只在pycharm右侧栏显示

问题情况如下: 画出的图只在右侧栏显示,而我们想弹出一个独立的窗口,拖动鼠标可以360度查看图像,还可以保存图片。 【 问题解决 】: File -> Settings ->Tools-> Python Scientific -> 将“Show plots i…

ode45的例程|MATLAB例程|四阶龙格库塔定步长节微分方程

ode45自己编的程序和测试代码 模型 模拟一个卫星绕大行星飞行的轨迹计算。 结果 轨迹图如下: 源代码 以下代码复制到MATLAB上即可运行,并得到上面的图像: % ode45自己编的程序和测试代码 % Evand©2024 % 2024-7-2/Ver1 clear;clc;close all; rng(0); % 参数设定…

7.基于SpringBoot的SSMP整合案例-表现层开发

目录 1.基于Restfu1进行表现层接口开发 1.1创建功能类 1.2基于Restful制作表现层接口 2.接收参数 2使用Apifox测试表现层接口功能 保存接口: 分页接口: 3.表现层一致性处理 3.1先创建一个工具类,用作后端返回格式统一类:…

15- 22题聚合函数 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例子2.15 - 有趣的电影2.16 - 平均售价2.17 - 项目员工 I2.18 - 各赛事的用户注册率2.19 - 查询结果的质量和占比2.20 - 每月交易 I2.21 - 即时食物配送 II2.22 - 游戏玩法分析 IV 1. 相关知识点 函数 函数含义order by排序group by分组between 小值 an…

Django 对模型创建的两表插入数据

1,添加模型 Test/app8/models.py from django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email models.EmailField(uniqueTrue)password models.CharField(max_length128) # 使用哈希存储密码first_name …