Redis从入门到实战(九、Redis 键(key))

174 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样。

这里先列出五中数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)

需要注意的是:

  • 每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样Redis会在合适的场景选择合 适的内部编码。
  • 每种数据结构都有两种以上的内部编码实现,例如string数据结构就包含了raw、int和 embstr三种内部编码。
  • 有些内部编码可以作为多种外部数据结构的内部实现,例如ziplist就是hash、list和zset共有的内部编码

1、Redis 键(key)

Redis 键命令用于管理 redis 的键。

例如:我们删除key,前提是key存在。

127.0.0.1:6379> set name redis
OK127.0.0.1:6379> del name
(integer) 1

DEL 是一个命令, runoobkey 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0

接下来我们来学习key的有关命令。

通过help [command] 可以查看一个命令的具体用法:

127.0.0.1:6379> help keys
​
KEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic

1.1、KEYS pattern

查看所有符合给定模式的key

127.0.0.1:6379> keys *
(empty list or set)
​
127.0.0.1:6379> set name redis
OK
127.0.0.1:6379> keys *
1) "name"

1.2、EXISTS key

检查给定 key 是否存在。

127.0.0.1:6379> exists name
(integer) 1127.0.0.1:6379> exists age
(integer) 0

1.3、DEL key

该命令用于在 key 存在时删除 key。

127.0.0.1:6379> DEL name
(integer) 1127.0.0.1:6379> DEL age
(integer) 0

1.4、MOVE key db

将当前数据库的 key 移动到给定的数据库 db 当中。

127.0.0.1:6379> move name 1
(integer) 1
​
127.0.0.1:6379> keys *
(empty list or set)
​
//切换到数据库1中,查询
127.0.0.1:6379> select 1
OK
​
127.0.0.1:6379[1]> keys *
1) "name"

1.5、EXPIRE key seconds

为给定 key 设置过期时间,以秒计

127.0.0.1:6379> expire name 3
(integer) 1//等3秒查询
127.0.0.1:6379> keys *
(empty list or set)

1.6、RENAME key newkey

修改key的名称

127.0.0.1:6379> rename name name1
OK127.0.0.1:6379> keys *
1) "name1"

1.7、TYPE key

返回 key 所储存的值的类型。

127.0.0.1:6379> type name
string

1.8、PERSIST key

移除 key 的过期时间,key 将持久保持。

127.0.0.1:6379> set age 12
OK127.0.0.1:6379> expire age 60
(integer) 1127.0.0.1:6379> persist age
(integer) 1127.0.0.1:6379> ttl age
(integer) -1

1.9、TTL key

查看还有多少秒过期,-1 表示永不过期,-2 表示已过期。

以下是设置age为10秒过期,中间使用ttl查看还有多久过期,最后过期就会返回-2

127.0.0.1:6379> expire age 10
(integer) 1127.0.0.1:6379> ttl age
(integer) 5127.0.0.1:6379> ttl age
(integer) 1127.0.0.1:6379> ttl age
(integer) -2