Redis key键

1年前 (2024-04-27)
Redis 是一种键值(key-value)型的缓存型数据库,它将数据全部以键值对的形式存储在内存中,并且 key 与 value 一一对应。这里的 key 被形象的称之为密钥,Redis 提供了诸多操作这把“密钥”的令,从而实现了对存储数据的管理。

您可以把 key 看成 value 的变量,通过检索 key 就可以找到对应的 value 值。为了更加全面的了解 key,我们将从以下三个维度做深入讲解:

  • key 的类型

  • key 的名规范

  • key 的过期时间

了解key的特点

1) key的类型

key 的类型对应着 value 的类型,同样也有五种(string、list、hash、set、zset)。如果 key 指向的是一个字符串类型的值,那么 key 的类型就是字符串。我们可以通过TYPE令来查看 key 的类型,示例如下:

# 字符串

redis> SET weather "sunny"

OK

redis> TYPE weather

string

# 列表

redis> LPUSH book_list "programming in scala"

(integer) 1

redis> TYPE book_list

list

#

redis> SADD pat "dog"

(integer) 1

redis> TYPE pat

set

2) key的名规范

key 的名需要遵循以下规则:

  • key 取值不可以太长,否则会影响 value 的查找效率,并且浪费内存空间。

  • key 取值也不能过短,否则会使得 key 可读性变差。


在 key 的取值上, Redis 官方建议使用“见名知意”的字符串格式,因为这样便于我们理解 key 的含义。比如要现在存放一个用户的姓名,其信息如下:

id

name

01

XiaoHong


我们使用一个 key 来存储用户的名字,key 的设置如下所示:

127.0.0.1:6379> set user:id:01:username XiaoHong

OK

上述示例,自定义了uesr:id:01:username这个 key,通过 key 不仅可以知道用户的 id,还可以知道这个 key 是用来存储用户名字的。注意,这里的:只是起到分割符的作用,并不是固定的语法格式。

注意:在符业务场景情况下,key 要尽可能的简单明了,您可以使用单词的缩写,或者自定义缩写格式。

在 Redis 中,我们也可以将一个空字符串设置成 key,示例如下:

127.0.0.1:6379> SET "" c.biancheng网站站点" rel="nofollow" />

redis 127.0.0.1:6379> COMMAND KEY_NAME

  • COMMAND:表示 key 的令;

  • KEY_NAME:表示 key 的名字。


通过示例进一步说明,DEL代表删除令,而  www.biancheng网站站点" rel="nofollow" />

redis 127.0.0.1:6379> SET www.biancheng网站站点" rel="nofollow" />

127.0.0.1:6379> SET num 12

OK

127.0.0.1:6379> DUMP num

"\x00\xc0\x0c\t\x00\xec\xd8\xa9\x9d\b\x82\xdfd"

如果 key 不存在时,则返回 nil。

2) EXPIRE设置过期时间

该令用于设置 key 的过期时间,当 key 过期后将不可以再使用。

127.0.0.1:6379> set www.biancheng网站站点" rel="nofollow" />

127.0.0.1:6379> set www.biancheng网站站点" rel="nofollow" />

redis 127.0.0.1:6379> SET course1 redis

OK

redis 127.0.0.1:6379> SET course2 php

OK

redis 127.0.0.1:6379> SET course3 python

OK

127.0.0.1:6379> keys course*

1) "course1"

2) "course2"

3) "course3"

#获取所有key

127.0.0.1:6379> keys *

1) "course1"

2) "course2"

3) "course3"

4) "num"

5) "www.biancheng网站站点" rel="nofollow" />

SCAN cursor [MATCH pattern] [COUNT count]

参数说明:

  • cursor :指定游标,从 0 开始新的迭代。

  • pattern:指定匹配的模式。

  • count:返回多少个元素,默认值为 10 。


SCAN 令可以迭代数据库中的所有键,如果想针对特定的数据类型迭代,那么令自然也要做相应的变化。如下所示:

  • SSCAN 令用于迭代键中的元素。

  • HSCAN 令用于迭代哈希键中的键值对。

  • ZSCAN 令用于迭代有序中的元素。


该令的使用示例如下:

127.0.0.1:6379> SCAN 0

1) "3"

2) 1) "name"

2) "website"

3) "biancheng2"

4) "www.biancheng网站站点" rel="nofollow" />

127.0.0.1:6379> SET www.biancheng网站站点" rel="nofollow" />