🎆慢品人间烟火色,闲观万事岁月长🎆
📖希望我写的博客对你有所帮助,如有不足,请指正📖✍️
文章目录
- Redis 最核心命令:get 和 set
- Redis 的全局命令
- keys 命令
- exists 命令
- del 命令
- expire 命令
- ttl 命令
- type 命令
- Redis 常用基本命令的总结
Redis 最核心命令:get 和 set
Redis 是按照键值对Key-Value的方式存储数据的
Redis 最核心命令:get 和 set
get 根据 key 来取 value
set 把 key 和 value 存诸进去
必须要先进入 redis-cli 客户端程序,才能输入Redis命令
通过以下命令启动 Redis,并使用 Redis 自带的客户端来连接服务器
redis-server /etc/redis/redis.conf
redis-cli
代码示例:
127.0.0.1:6379> set key value1
OK
127.0.0.1: 6379> set key1 value1
OK
127.0.0.1:6379> set key2 value2
OK
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key0213
(nil)
get 命令直接输入 key 就能得到 value,如果当前 key 不存在,会返回 nil ,和 null/NULL 有些类似
What ls the Difference Between’Null’and’Nil’
'Null’and 'nil’are synonymous and both mean 'zero’or ‘nothing’ in value.The two words differ mainly by what field we use them in. We use 'null’mostly in maths, programming, business, and legal matters.On the otherhand, we use ‘nil’ in sports and games.
null
和nil
之间的区别 :Null
和nil
是同义词,都表示值为0
或nothing
。
这两个词的区别主要在于我们使用它们的领域。
我们主要在数学、编程、商业和法律事务中使用null
,另一方面,我们在体育和游戏中使用nil
。
Redis 的全局命令
Redis 支持很多种数据结构,全局命令,就是能够搭配任意一个数据结构来使用的命令
Redis 自身的这些键值对,是通过哈希表的方式来组织的。键值对中的 key 固定是字符串,但是 value 可以是字符串,哈希表,列表,集合,有序集合这些多种类型
keys 命令
用来查询当前服务器上匹配的 key,通过一些特殊符号(通配符)来描述 key 的模样,匹配上述模样的 key 就能被查询出来
语法:
KEYS pattern
时间复杂度:O(N)
返回值:匹配 pattern 的所有 keypattern
:包含特殊符号的字符串,翻译成"样式"或者"模式",存在的意义,对匹配字符串要求的描述
pattern 支持的匹配符
?
:匹配任意一个字符
示例:h?llo
匹配hello
,hallo
和hxllo
127.0.0.1:6379> set hello 1
127.0.0.1:6379> set hallo 2
127.0.0.1:6379> set hxllo 3
127.0.0.1:6379> keys h?llo
1) "hxllo"
2) "hello"
3) "hallo"
*
:匹配0个或者多个任意字符
示例:h*llo
匹配hllo
和heeeello
127.0.0.1:6379> set hllo 1
OK
127.0.0.1:6379> set heeeello 2
OK
127.0.0.1:6379> keys h*llo
1) "heeeello"
2) "hllo"
注:keys *
=> 查询 redis 中所有的 key
[]
:[ae]
只能匹配到 a, e。相当于选择题给出固定的选项
示例:h[ae]llo
匹配hello
和hallo
, 但不匹配hillo
127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> set hallo 2
OK
127.0.0.1:6379> set hillo 3
OK
127.0.0.1:6379> keys h[ae]llo
1) "hello"
2) "hallo"
[^e]
:排除 e,只有e匹配不了,其他的都能匹配。可以理解考试时我们做选择题的排除法
示例:h[^e]llo
匹配hallo
,hbllo
, … 但不匹配hello
127.0.0.1:6379> set hallo 1
OK
127.0.0.1:6379> set hbllo 2
OK
127.0.0.1:6379> set hello 3
OK
127.0.0.1:6379> keys h[^e]llo
1) "hallo"
2) "hbllo"
[a-b]
:匹配 a - b 这个范围内的字符,包含两侧边界
示例:h[a-b]llo
匹配hallo
和hbllo
, 但不匹配hcllo
127.0.0.1:6379> set hallo 1
OK
127.0.0.1:6379> set hbllo 2
OK
127.0.0.1:6379> set hcllo 3
OK
127.0.0.1:6379> keys h[a-b]llo
1) "hallo"
2) "hbllo"
exists 命令
判断 key 是否存在
语法:
EXISTS key [key ...]
时间复杂度:O(1)
返回值:key 存在的个数(针对多个 key)
Redis 按照哈希表的方式来组织 key 的,哈希表的查询时间复杂度是 O(1)
Redis 已存在的 key
127.0.0.1:6379> keys *
1) "hillo"
2) "hcllo"
3) "hallo"
4) "hbllo"
示例1:
127.0.0.1:6379> EXISTS hello
(integer) 1
127.0.0.1:6379> EXISTS hallo
(integer) 1
示例2:
127.0.0.1:6379> EXISTS hello hallo
(integer) 2
示例1 和 示例2 的区别:
Redis 是一个客户端服务器结构的程序,客户端和服务器之间通过网络来进行通信;
示例1 相对于示例2 会产生更多轮次的网络通信,效率更低,成本更高
del 命令
del (delete) 删除指定的 key, 可以一次删除一个或者多个
语法:
DEL key [key ...]
时间复杂度:O(1)
返回值:删除掉的 key 的个数
示例:
127.0.0.1:6379> keys *
1) "hallo"
2) "hcllo"
3) "hello"
4) "hillo"
5) "hbllo"
127.0.0.1:6379> del hillo
(integer) 1
127.0.0.1:6379> del hello hallo aaa
(integer) 2
127.0.0.1:6379> keys *
1) "hcllo"
2) "hbllo"
expire 命令
expire 作用是给指定的 key 设置过期时间:key 存活时间超出这个指定的值,就会被自动删除;
此处设定过期时间,必须是针对已经存在的 key 设置
注: 1. 这里的 expire 时间单位是 秒/s
2. 需要设置毫秒的过期时间,使用 pexpire
命令,使用: pexpire key 毫秒
语法:
EXPIRE key seconds
时间复杂度:O(1)
返回值:1 表⽰设置成功,0 表⽰设置失败
使用场景:比如手机验证码,该验证码,5分钟内有效;点外卖,优惠券,在指定时间之内有效
设置成功返回1,设置失败返回0
示例:
127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> expire hello 7
(integer) 1
127.0.0.1:6379> get hello
"1"
127.0.0.1:6379> get hello
"1"
127.0.0.1:6379> get hello
"1"
127.0.0.1:6379> get hello
"1"
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get hello
(nil)
ttl 命令
TTL (Time To Live),查看当前指定 key 的过期时间,秒级
注:有pttl
命令与上述的 pexpire
命令是对应的
语法:
TTL key
时间复杂度:O(1)
返回值:剩余过期时间,-1 表⽰没有关联过期时间,-2 表⽰ key 不存在
示例:
127.0.0.1:6379> set fly 0213
OK
127.0.0.1:6379> expire fly 7
(integer) 1
127.0.0.1:6379> ttl fly
(integer) 4
127.0.0.1:6379> ttl fly
(integer) 2
127.0.0.1:6379> ttl fly
(integer) 1
127.0.0.1:6379> ttl fly
(integer) -2
再次 get hello
, 会发现 hello 已经消失了,说明 这个 key 时间到,就被删除了
127.0.0.1:6379> get hello
(nil)
type 命令
Redis 所有的 key 都是 string,但是 key 对应的 value 是可能会存在多种类型的, 而type
命令就是会返回 key 对应的数据类型
语法:
TYPE key
时间复杂度:O(1)
返回值: none
, string
, list
, set
, zset
, hash
and stream
…。
注意: stream
是 Redis 作为消息队列的时候,使用这个类型的 value
示例:
none
127.0.0.1:6379> type key1
none
string
127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> type key2
string
list
127.0.0.1:6379> lpush key3 111 222 333
(integer) 6
127.0.0.1:6379> type key3
list
set
127.0.0.1:6379> sadd key4 111 222 333
(integer) 1
127.0.0.1:6379> type key4
set
hash
127.0.0.1:6379> hset key5 field1 value1
(integer) 1
127.0.0.1:6379> type key5
hash
Redis 常用基本命令的总结
命令 | 对应的作用 |
keys | 用来查看匹配规则的 key |
exists | 用来判定指定 key 是否存在 |
del | 删除指定的 key |
expire | 给 key 设置过期时间 |
ttl | 查询 key 的过期时间 |
type | 查询 key 对应的 value 的类型 |