一、系统级命令(不归属任何一个数据结构)
从keys命令说起
1、 可以模式匹配 也就是可以用正则表达式的方式来匹配
格式为KEYS pattern
glob风格通配符规则
? 匹配一个字符
*匹配任意个字符(包括0个)
[] 匹配括号间的任一个字符,可以使用”-”代表一个范围如a[b-d]可以匹配“ab”,”ac”,”ad”
\x 匹配字符x,用于转义符号,如果要匹配”?”就需要使用\?
set 设置
get获取
如下使用场景:
产品的缓存 product+”.”+....;
订单的缓存: order+”.”+...;
KEYS * 找到所有的key
利用*
127.0.0.1:6379> flushdb 清空数据库
OK
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> set nbme pyrene
OK
127.0.0.1:6379> keys *
1) "nbme"
2) "name"
127.0.0.1:6379> keys n?me
1) "nbme"
2) "name"
2、 判断一个建是否存在
EXISTS key
如果键存在则返回整数类型1,否则返回0
3、 删除键
DEL key [key...]
可以删除一个或者多个键,返回值为删除键的个数
127.0.0.1:6379> del name nbme
(integer) 2
127.0.0.1:6379> keys *
(empty list or set)
获取键值的数据类型
TYPE key
判断当前的键是什么类型,返回值可能是string、hash(散列类型)、list、set、zset
127.0.0.1:6379> hset collections key value
(integer) 1
127.0.0.1:6379> type collections
hash
View Code
从当前数据库中随机(不删除)返回一个key
RANDMKEY
返回值
当数据库不为空的时候返回1
当数据库为空的时候返回nil
127.0.0.1:6379> randomkey
"name"
127.0.0.1:6379> randomkey
"nbme"
127.0.0.1:6379> randomkey
"name"
127.0.0.1:6379> randomkey
"fruits"
127.0.0.1:6379> randomkey
"collections"
127.0.0.1:6379> randomkey
"nbme"
127.0.0.1:6379> randomkey
"collections"
127.0.0.1:6379> randomkey
"fruits"
View Code
设置过期时间
EXPIRE key seconds 【以秒为单位】
如果要做缓存就要做过期时间
返回值:
设置成功返回值为1
当 key 不存在或者不能为 key 设置生存时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的生存时间),返回 0
127.0.0.1:6379> expire name 5 给name这个键设置5秒
(integer) 1
127.0.0.1:6379> get name
"pyrene"
127.0.0.1:6379> get name
"pyrene"
127.0.0.1:6379> get name
(nil)
View Code
PEXPIRE key milliseconds 【毫秒为单位】
这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> get name
"pyrene"
127.0.0.1:6379> pexpire name 10000
(integer) 1
127.0.0.1:6379> get name
"pyrene"
127.0.0.1:6379> get name
(nil)
View Code
以某个时间点为设置过期时间
EXPIREAT key timestap
返回值:
如果设置成功 返回1
如果key不存在或者没办法设置生存时间返回0
应用场景
如每晚10点清空集群缓存
pexpireat 【微妙】
以微妙时间点为过期时间
TTL 查看key还有多长的存活时间(time to live) [秒为单位]
返回值
当key不存在的时候,返回-2
当key存在但是没有设置生存时间的时候返回-1
否则以秒为单位,返回key的剩余生存时间
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> expire name 20
(integer) 1
127.0.0.1:6379> ttl name
(integer) 16
127.0.0.1:6379> ttl name
(integer) 13
127.0.0.1:6379> ttl name
(integer) 11
127.0.0.1:6379> ttl name
(integer) 8
127.0.0.1:6379> ttl name
(integer) 3
127.0.0.1:6379> ttl name
(integer) -2
与ttl对应的就是pttl,唯一不一样的是以【毫秒为单位】
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> get name
"pyrene"
127.0.0.1:6379> expire name 20
(integer) 1
127.0.0.1:6379> pttl name
(integer) 16577
127.0.0.1:6379> pttl name
(integer) 10588
127.0.0.1:6379> pttl name
(integer) 474
127.0.0.1:6379> pttl name
(integer) -2