正厚软件干货|redis key键

本文由重庆渝中孙正老师提供

一、redis key键的介绍

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 的类型。

示例1:创建并查看字符串类型

命令:set weather “sunny”-->type weather

效果:创建并查看成功。

542636d9ae8aec1890b2b0992358256c.jpeg

示例2:创建并查看列表类型

命令:LPUSH book_list "test001"-->type book_list

效果:创建并查看成功

正厚软件干货|redis key键_第1张图片

示例3:创建并查看集合类型

命令:sadd pet “cat”-->type pet

效果:创建并查看成功

正厚软件干货|redis key键_第2张图片

2.key的命名规范

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

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

key 取值也不能过短,否则会使得 key 可读性变差。
在 key 的取值上,建议使用“见名知意”的字符串格式,因为这样便于我们理解 key 的含义。比如要现在存放一个用户的姓名,其信息如下:

id

name

01

XiaoHong

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

正厚软件干货|redis key键_第3张图片

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

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

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

正厚软件干货|redis key键_第4张图片

key 的类型并不局限于字符串,在 Redis 中 key 具有二进制安全的特性,这意味着它可以使用任何二进制序列,但是这种 key 过于复杂一般不建议采用。总之,“见名知意”就是 key 最佳的命名规范。

对于相同数据类型而言,如果对已经存在的 key 重新设置了新的 value,那么原来的 value 就会被覆盖掉。因此,可以用这种方法来修改 key 存储的值。

3.key过期时间

Redis 允许你为 key 设置一个过期时间(使用 EXPIRE 等命令),也就是“到点自动删除”,这在实际业务中是非常有用的,一是它可以避免使用频率不高的 key 长期存在,从而占用内存资源;二是控制缓存的失效时间。

Redis 会把每个设置了过期时间的 key 存放到一个独立的字典中,并且会定时遍历这个字典来删除到期的 key。除了定时遍历之外,它还会使用“惰性策略”来删除过期的 key。所谓“惰性策略”指的是当客户端访问这个 key 的时候,Redis 对 key 的过期时间进行检查,如果过期了就立即删除。Redis 使用两种方式相结合的方法来处理过去的 key。 

过期时间,有许多的应用场景,比如购物 App 会在特定的时间节点推出相关的活动,比如双十一、双十二、618购物节等,这些活动都是一年一度如期开办,因此当下一期举行时,上一期的活动的数据就没有意义了,在这种情景下就可以给 key 设置一个过期时间,从而减少无用数据占用内存资源。

你可能感兴趣的:(redis)