Redis key键

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

可以把 key 看成 value 的变量,通过检索 key 就可以找到对应的 value 值:

  • 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 可读性变差。
3) key过期时间

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

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

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

Redis key命令格式

和 key 相关的命令,它的语法格式如下所示: 

 redis 127.0.0.1:6379> COMMAND KEY_NAME

  • COMMAND:表示 key 的命令;
  • KEY_NAME:表示 key 的名字。

示例: DEL代表删除命令,而 cc 是键。如果成功删除了键,则将的返回整数 1,否则将返回整数 0。如下:

redis 127.0.0.1:6379> SET cc "你好"
OK
#删除key
redis 127.0.0.1:6379> DEL  cc
(integer) 1
#若键不存在删除失败
redis 127.0.0.1:6379> DEL age
(integer) 0

Redis键命令汇总

下表对常用的 Redis 键命令做了简单的总结:

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

你可能感兴趣的:(#,Redis,redis,数据库,缓存)