使用 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。
示例
-
设置一个简单的字符串:
SET mykey "Hello Redis"
此命令将键
mykey
设置为值"Hello Redis"
。 -
设置密钥的过期时间(以秒为单位):
SET anotherkey "This will expire" EX 10
此命令将键
anotherkey
值设置为"This will expire"
,并设置其在 10 秒后过期。10 秒后,Redis 将自动删除该键。 -
设置具有过期时间的密钥(以毫秒为单位):
SET yetanotherkey "Expires quickly" PX 5000
此命令将键
yetanotherkey
设置为值"Expires quickly"
,并将其设置为在 5000 毫秒(5 秒)后过期。 -
仅当密钥不存在时才设置密钥(
NX
):SET newkey "Only if it's new" NX
如果
newkey
不存在,则会将其设置为"Only if it's new"
。如果newkey
已经存在,则该命令将不执行任何操作并返回nil
。 -
仅当密钥已存在时才设置密钥(
XX
):SET existingkey "Only if it exists" XX
如果
existingkey
存在,则会将其设置为"Only if it exists"
。如果existingkey
不存在,则该命令将不执行任何操作并返回nil
。 -
设置键并返回旧值(
GET
):SET mykey "New Value" GET
如果
mykey
存在,则将其设置为"New Value"
,并返回旧值。如果mykey
不存在,则将其设置为"New Value"
,并返回nil
。
实际考虑
- 覆盖: 请注意,
SET
会覆盖现有值。如果需要条件设置,请使用NX
或XX
。 - 过期: 使用过期时间自动删除陈旧数据,这对于缓存特别有用。
- 原子性:
SET
是一种原子操作,因此可以在并发环境中安全使用。
GET
命令
GET
命令用于检索键的值。
基本语法
GET key
key
:要检索的密钥。
示例
-
获取现有键的值:
SET mykey "Hello Redis" GET mykey
这将返回
"Hello Redis"
。 -
获取不存在的键的值:
GET nonexistingkey
这将返回
nil
。
实际考虑
- 错误处理: 使用
GET
时始终检查是否为nil
,因为它表示键不存在。 - 数据类型:
GET
始终返回字符串。如果您将整数或其他数据类型存储为字符串,则可能需要在检索后进行转换。
DEL
命令
DEL
命令用于删除一个或多个键。
基本语法
DEL key [key ...]
key
:要删除的键。您可以一次指定多个要删除的键。
示例
-
删除单个键:
SET mykey "Hello Redis" DEL mykey GET mykey
执行这些命令后,
GET mykey
将返回nil
。 -
删除多个键:
SET key1 "Value 1" SET key2 "Value 2" SET key3 "Value 3" DEL key1 key2 key3
此命令删除
key1
、key2
和key3
。
实际考虑
- 返回值:
DEL
返回成功删除的键的数量。 - 不存在的键: 如果您尝试删除一个不存在的键,
DEL
会忽略它,不会引发错误。返回值仍然会反映实际删除的键的数量。 - 原子性:
DEL
是一个原子操作。