成都创新互联公司专注于高昌企业网站建设,响应式网站建设,商城系统网站开发。高昌网站建设公司,为高昌等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
您可以把 key 看成 value 的变量,通过检索 key 就可以找到对应的 value 值。为了更加全面的了解 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
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.net OK 127.0.0.1:6379> GET "" "c.biancheng.net"
key 的类型并不局限于字符串,在 Redis 中 key 具有二进制安全的特性,这意味着它可以使用任何二进制序列,但是这种 key 过于复杂一般不建议采用。总之,“见名知意”就是 key 最佳的命名规范。
对于相同数据类型而言,如果您对已经存在的 key 重新设置了新的 value,那么原来的 value 就会被覆盖掉。因此,您可以用这种方法来修改 key 存储的值。
Redis 允许你为 key 设置一个过期时间(使用 EXPIRE 等命令),也就是“到点自动删除”,这在实际业务中是非常有用的,一是它可以避免使用频率不高的 key 长期存在,从而占用内存资源;二是控制缓存的失效时间。
Redis 会把每个设置了过期时间的 key 存放到一个独立的字典中,并且会定时遍历这个字典来删除到期的 key。除了定时遍历之外,它还会使用“惰性策略”来删除过期的 key。所谓“惰性策略”指的是当客户端访问这个 key 的时候,Redis 对 key 的过期时间进行检查,如果过期了就立即删除。Redis 使用两种方式相结合的方法来处理过去的 key。
过期时间,有许多的应用场景,比如购物 App 会在特定的时间节点推出相关的活动,比如双十一、双十二、618购物节等,这些活动都是一年一度如期开办,因此当下一期举行时,上一期的活动的数据就没有意义了,在这种情景下就可以给 key 设置一个过期时间,从而减少无用数据占用内存资源。
了解完 key 的相关规范,接下来看一下和 key 相关的命令,它的语法格式如下所示:
redis 127.0.0.1:6379> COMMAND KEY_NAME
通过示例进一步说明,
DEL
代表删除命令,而 www.biancheng.net 是键。如果成功删除了键,则将的返回整数 1,否则将返回整数 0。示例如下:
redis 127.0.0.1:6379> SET www.biancheng.net "编程帮你好" OK #删除key redis 127.0.0.1:6379> DEL www.biancheng.net (integer) 1 #若键不存在删除失败 redis 127.0.0.1:6379> DEL age (integer) 0
下表对常用的 Redis 键命令做了简单的总结:
命令 | 说明 |
---|---|
DEL key | 若键存在的情况下,该命令用于删除键。 |
DUMP key | 用于序列化给定 key ,并返回被序列化的值。 |
EXISTS key | 用于检查键是否存在,若存在则返回 1,否则返回 0。 |
EXPIRE key | 设置 key 的过期时间,以秒为单位。 |
EXPIREAT key | 该命令与 EXPIRE 相似,用于为 key 设置过期时间,不同在于,它的时间参数值采用的是时间戳格式。 |
PEXPIRE key | 设置 key 的过期,以毫秒为单位。 |
PEXPIREAT key | 与 PEXPIRE 相似,用于为 key 设置过期时间,采用以毫秒为单位的时间戳格式。 |
KEYS pattern | 此命令用于查找与指定 pattern 匹配的 key。 |
MOVE key db | 将当前数据库中的 key 移动至指定的数据库中(默认存储为 0 库,可选 1-15中的任意库)。 |
PERSIST key | 该命令用于删除 key 的过期时间,然后 key 将一直存在,不会过期。 |
PTTL key | 用于检查 key 还剩多长时间过期,以毫秒为单位。 |
TTL key | 用于检查 key 还剩多长时间过期,以秒为单位。 |
RANDOMKEY | 从当前数据库中随机返回一个 key。 |
RENAME key newkey | 修改 key 的名称。 |
RENAMENX key newkey | 如果新键名不重复,则将 key 修改为 newkey。 |
SCAN cursor | 基于游标的迭代器,用于迭代数据库中存在的所有键,cursor 指的是迭代游标。 |
TYPE key | 该命令用于获取 value 的数据类型。 |
下面对一些较难理解的命令做实例演示:
该命令用于将键对应的值做序列化处理,实例如下:
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。
该命令用于设置 key 的过期时间,当 key 过期后将不可以再使用。
127.0.0.1:6379> set www.biancheng.net Python OK 127.0.0.1:6379> set www.biancheng.net Python EX 60 OK 127.0.0.1:6379> EXPIRE www.biancheng.net 120 (integer) 1
上面介绍了两种设置过期时间的方法,它们都可以实现过期时间设置,key 过期后将自动被删除。
以时间戳格式设置过期时间,并以毫秒为单位。
127.0.0.1:6379> set www.biancheng.net Python OK 127.0.0.1:6379> PEXPIREAT www.biancheng.net 12000000000 (integer) 1
设置成功返回 1,若 key 不存在或者不能为其设置过期时间,则返回 0。
查找指定模式的键。
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.net"
注意:keys * 会返回当前库中所有的键。
SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 否则将无法继续跌代。如果新游标返回 0 则表示迭代结束。
SCAN 命令的语法格式如下:
SCAN cursor [MATCH pattern] [COUNT count]
参数说明:
SCAN 令可以迭代数据库中的所有键,如果想针对特定的数据类型迭代,那么命令自然也要做相应的变化。如下所示:
该命令的使用示例如下:
127.0.0.1:6379> SCAN 0 1) "3" 2) 1) "name" 2) "website" 3) "biancheng2" 4) "www.biancheng.net" 5) "biancheng3" 6) "biancheng1" 7) "course2" 8) "topic" 9) "course1" 10) "age" 127.0.0.1:6379> SCAN 3 1) "0" 2) 1) "biancheng" 2) "course3" 3) "userid:1" 4) "num"
在 key 设置过期时间的情况下,使用该命令检查 key 剩余的过期时间。
当键没有设置过期时间,表示是永久有效时,TTL 命令返回 -1;当键过期或者被删除时,TTL 命令返回 -2。示例如下:
127.0.0.1:6379> SET www.biancheng.net hello OK 127.0.0.1:6379> ttl www.biancheng.net (integer) -1 127.0.0.1:6379> SET user:1 Jack EX 120 OK 127.0.0.1:6379> TTL user:1 (integer) 108 127.0.0.1:6379> DEL user:1 (integer) 1 127.0.0.1:6379> TTL user:1 (integer) -2
如果想了解更多命令,请参考:http://doc.redisfans.com/
文章题目:Rediskey键
地址分享:http://www.shufengxianlan.com/qtweb/news44/48694.html
成都网站建设公司_创新互联,为您提供网站制作、网站收录、搜索引擎优化、软件开发、品牌网站设计、定制网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联