redis 数据结构-01( SET、GET、DEL)

news2025/12/18 9:29:18

使用 Redis 字符串:SET、GET、DEL

Redis 字符串是用于存储和操作文本或二进制数据的基本数据类型。它们是 Redis 中最简单但功能最丰富的数据结构,可作为构建更复杂结构的基石。了解如何有效地使用字符串对于充分利用 Redis 的缓存、会话管理以及其他各种应用功能至关重要。本课将介绍使用 Redis 字符串的核心命令: SET 、 GET 和 DEL 。

理解 Redis 字符串

Redis 字符串是字节序列。虽然它们通常用于存储文本,但它们也可以存储序列化的对象、图像或任何其他二进制数据。Redis 字符串的最大大小为 512 MB。

关键概念

  • 键值对: Redis 将数据存储为键值对。键是字符串的唯一标识符,值是实际的字符串数据。
  • 二进制安全: Redis 字符串是“二进制安全的”,这意味着它们可以存储任何字节序列而无需特殊解释。这对于处理各种数据格式至关重要。
  • 原子操作: Redis 中的许多字符串操作都是原子的,确保操作作为单个不可分割的单元执行。这对于在并发环境中维护数据一致性至关重要。

数据类型

尽管 Redis 将它们称为“字符串”,但它们可以表示不同的数据类型:

  • 字符串: 纯文本字符串,例如 "hello" 或 "Redis is fast" 。
  • 整数: 包含可使用原子操作增加或减少的数值的字符串。
  • 浮点数: 虽然 Redis 没有原生浮点类型,但您可以将浮点数存储为字符串。
  • 二进制数据: 图像、序列化对象或任何其他二进制数据。

SET 命令

SET 命令用于为键赋值。如果键已存在,则其值会被覆盖。

基本语法

SET key value [expiration] [NX|XX] [GET]
  • key :要设置的键。
  • value :分配给键的值。
  • expiration :(可选)指定密钥的到期时间。
  • NX|XX :(可选)条件设置:
    • NX :仅当密钥不存在时才设置它。
    • XX :仅当密钥已存在时才设置该密钥。
  • GET :(可选)返回存储在键的旧字符串,当键不存在时返回 nil。

示例

  1. 设置一个简单的字符串:

    SET mykey "Hello Redis"
    

    此命令将键 mykey 设置为值 "Hello Redis" 。

  2. 设置密钥的过期时间(以秒为单位):

    SET anotherkey "This will expire" EX 10
    

    此命令将键 anotherkey 值设置为 "This will expire" ,并设置其在 10 秒后过期。10 秒后,Redis 将自动删除该键。

  3. 设置具有过期时间的密钥(以毫秒为单位):

    SET yetanotherkey "Expires quickly" PX 5000
    

    此命令将键 yetanotherkey 设置为值 "Expires quickly" ,并将其设置为在 5000 毫秒(5 秒)后过期。

  4. 仅当密钥不存在时才设置密钥( NX ):

    SET newkey "Only if it's new" NX
    

    如果 newkey 不存在,则会将其设置为 "Only if it's new" 。如果 newkey 已经存在,则该命令将不执行任何操作并返回 nil 。

  5. 仅当密钥已存在时才设置密钥( XX ):

    SET existingkey "Only if it exists" XX
    

    如果 existingkey 存在,则会将其设置为 "Only if it exists" 。如果 existingkey 不存在,则该命令将不执行任何操作并返回 nil 。

  6. 设置键并返回旧值( GET ):

    SET mykey "New Value" GET
    

    如果 mykey 存在,则将其设置为 "New Value" ,并返回旧值。如果 mykey 不存在,则将其设置为 "New Value" ,并返回 nil 。

实际考虑

  • 覆盖: 请注意, SET 会覆盖现有值。如果需要条件设置,请使用 NX 或 XX 。
  • 过期: 使用过期时间自动删除陈旧数据,这对于缓存特别有用。
  • 原子性: SET 是一种原子操作,因此可以在并发环境中安全使用。

GET 命令

GET 命令用于检索键的值。

基本语法

GET key
  • key :要检索的密钥。

示例

  1. 获取现有键的值:

    SET mykey "Hello Redis"
    GET mykey
    

    这将返回 "Hello Redis" 。

  2. 获取不存在的键的值:

    GET nonexistingkey
    

    这将返回 nil 。

实际考虑

  • 错误处理: 使用 GET 时始终检查是否为 nil ,因为它表示键不存在。
  • 数据类型: GET 始终返回字符串。如果您将整数或其他数据类型存储为字符串,则可能需要在检索后进行转换。

DEL 命令

DEL 命令用于删除一个或多个键。

基本语法

DEL key [key ...]
  • key :要删除的键。您可以一次指定多个要删除的键。

示例

  1. 删除单个键:

    SET mykey "Hello Redis"
    DEL mykey
    GET mykey
    

    执行这些命令后, GET mykey 将返回 nil 。

  2. 删除多个键:

    SET key1 "Value 1"
    SET key2 "Value 2"
    SET key3 "Value 3"
    DEL key1 key2 key3
    

    此命令删除 key1 、 key2 和 key3 。

实际考虑

  • 返回值: DEL 返回成功删除的键的数量。
  • 不存在的键: 如果您尝试删除一个不存在的键, DEL 会忽略它,不会引发错误。返回值仍然会反映实际删除的键的数量。
  • 原子性: DEL 是一个原子操作。

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

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

相关文章

【Nacos】env NACOS_AUTH_TOKEN must be set with Base64 String.

【Nacos】env NACOS_AUTH_TOKEN must be set with Base64 String. 问题描述 env NACOS_AUTH_TOKEN must be set with Base64 String.原因分析 从错误日志中可以看出,Nacos 启动失败的原因是缺少必要的环境变量 NACOS_AUTH_TOKEN。 NACOS_AUTH_TOKEN: Nacos 用于生…

秋招准备——2.跨时钟相关

格雷码异步FIFO跨时钟域处理 格雷码 一、格雷码规律 相邻性:相邻两个数的格雷码只有一位不同,例如: 0000 → 0001(仅最低位变化)0001 → 0011(仅次低位变化)0011 → 0010(仅最低位…

激光打印机常见打印故障简单处理意见

一、 问题描述: 给打印机更换新的硒鼓时拉开硒鼓封条时有微量碳粉带出; 原因: 出厂打印测试时,可能会有微量碳粉在磁辊上或者磁辊仓; 解决方法: 擦干净即可正常使用; 二、 问题描述&…

【2025最新】Windows系统装VSCode搭建C/C++开发环境(附带所有安装包)

文章目录 为什么选择VSCode作为C/C开发工具?一、VSCode安装过程(超简单!)二、VSCode中文界面设置(再也不用对着英文发愁!)三、安装C/C插件(编程必备神器!)四、…

MYSQL 查询去除小数位后多余的0

MYSQL 查询去除小数位后多余的0 在MySQL中,有时候我们需要去除存储在数据库中的数字字段小数点后面多余的0。这种情况通常发生在处理金额或其他需要精确小数位的数据时。例如,数据库中存储的是decimal (18,6)类型的数据,但在页面展示时不希望…

基于GF域的多进制QC-LDPC误码率matlab仿真,译码采用EMS算法

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 本课题实现的是四进制QC-LDPC 仿真操作步骤可参考程序配套的操作视频。 2.算…

Vitrualbox完美显示系统界面(只需三步)

目录 1.使用vitrualbox的增强功能:​编辑 2.安装增强功能(安装完后要重启虚拟机): 3. 调整界面尺寸(如果一个选项不行的话,就多试试其他不同的百分比): 先看看原来的,…

王炸组合!STL-VMD二次分解 + Informer-LSTM 并行预测模型

往期精彩内容: 单步预测-风速预测模型代码全家桶-CSDN博客 半天入门!锂电池剩余寿命预测(Python)-CSDN博客 超强预测模型:二次分解-组合预测-CSDN博客 VMD CEEMDAN 二次分解,BiLSTM-Attention预测模型…

n8n 修改或者智能体用文档知识库创建pdf

以下是对 Nextcloud、OnlyOffice、Seafile、Etherpad、BookStack 和 Confluence 等本地部署文档协作工具的综合评测、对比分析和使用推荐,帮助您根据不同需求选择合适的解决方案。 🧰 工具功能对比 工具名称核心功能本地部署支持适用场景优势与劣势Next…

论坛系统(中-1)

软件开发 编写公共代码 定义状态码 对执⾏业务处理逻辑过程中可能出现的成功与失败状态做针对性描述(根据需求分析阶段可以遇见的问题提前做出定义),⽤枚举定义状态码,先定义⼀部分,业务中遇到新的问题再添加 定义状态码如下 状态码类型描…

FPGA+ESP32 = GameBoy 是你的童年吗?

之前介绍的所有的复古游戏机都是基于Intel-Altera FPGA制作的,今天就带来一款基于AMD-Xilinx FPGA的复古掌上游戏机-Game Bub。 Game Bub是一款掌上游戏机,旨在畅玩 Game Boy、Game Boy Color 和 Game Boy Advance 游戏。与大多数现代掌上游戏机一样&…

3D迷宫探险:伪3D渲染与运动控制的数学重构

目录 3D迷宫探险:伪3D渲染与运动控制的数学重构引言第一章 伪3D渲染引擎1.1 射线投射原理1.2 纹理透视校正第二章 迷宫生成算法2.1 图论生成模型2.2 复杂度控制第三章 第一人称控制3.1 运动微分方程3.2 鼠标视角控制第四章 碰撞检测优化4.1 层级检测体系4.2 滑动响应算法第五章…

【金仓数据库征文】_金仓数据库在金融行业的两地三中心容灾架构实践

金仓数据库在金融行业的两地三中心容灾架构实践 🌟嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 引言 随着国家对信息技术应用创新&#xff0…

Python作业练习3

任务简述 字符田字格绘制 代码实现 def print_tianzige():for i in range(11):if i in [0, 5, 10]:print("" "-----" * 2)else:print("|" " |" * 2)print_tianzige() 结果展示

十五种光电器件综合对比——《器件手册--光电器件》

十五、光电器件 名称 原理 特点 应用 发光二极管(LED) 基于半导体材料的电致发光效应,当电流通过时,电子与空穴复合,释放出光子。 高效、节能、寿命长、响应速度快、体积小。 广泛用于指示灯、照明、显示&#…

【计算机视觉】OpenCV项目实战:基于face_recognition库的实时人脸识别系统深度解析

基于face_recognition库的实时人脸识别系统深度解析 1. 项目概述2. 技术原理与算法设计2.1 人脸检测模块2.2 特征编码2.3 相似度计算 3. 实战部署指南3.1 环境配置3.2 数据准备3.3 实时识别流程 4. 常见问题与解决方案4.1 dlib安装失败4.2 人脸检测性能差4.3 误识别率高 5. 关键…

游戏资源传输服务器

目录 项目简介项目实现nginx配置服务器逻辑图 项目代码简介reactor 模型部分文件传输部分 项目演示视频演示演示分析 项目简介 使用C开发,其中资源存储在fastdfs 中,用户通过http上传或下载资源文件,此项目需要开启nginx中的nginx-upload-mod…

2025-5-13渗透测试:CVE-2021-42278 和日志分析,NTLM 协议和PTH (Pass-the-Hash) Relay 捕获 Hash

CVE-2021-42278/42287 漏洞利用 漏洞原理 42278:通过修改计算机账户的 sAMAccountName(如去掉 $),伪装成域控制器(DC)名称,欺骗KDC生成高权限TGT。42287:KDC在验证TGT时若找不到匹配…

基于深度学习的水果识别系统设计

一、选择YOLOv5s模型 YOLOv5:YOLOv5 是一个轻量级的目标检测模型,它在 YOLOv4 的基础上进行了进一步优化,使其在保持较高检测精度的同时,具有更快的推理速度。YOLOv5 的网络结构更加灵活,可以根据不同的需求选择不同大…

C——五子棋小游戏

前言 五子棋,又称连珠棋,是一种双人对弈的棋类游戏。游戏目标是在一个棋盘上,通过在横、竖、斜线上依次放置棋子,使自己的五个棋子连成一线,即横线、竖线或斜线,且无被对手堵住的空位,从而获胜…