Redis key键
您可以把 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" />