🎆慢品人间烟火色,闲观万事岁月长🎆

📖希望我写的博客对你有所帮助,如有不足,请指正📖✍️


文章目录

  • 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.

nullnil之间的区别 :
Nullnil是同义词,都表示值为0nothing
这两个词的区别主要在于我们使用它们的领域。
我们主要在数学、编程、商业和法律事务中使用null,另一方面,我们在体育和游戏中使用nil

Redis 的全局命令

Redis 支持很多种数据结构,全局命令,就是能够搭配任意一个数据结构来使用的命令
Redis 自身的这些键值对,是通过哈希表的方式来组织的。键值对中的 key 固定是字符串,但是 value 可以是字符串,哈希表,列表,集合,有序集合这些多种类型

keys 命令

用来查询当前服务器上匹配的 key,通过一些特殊符号(通配符)来描述 key 的模样,匹配上述模样的 key 就能被查询出来

语法:

KEYS pattern

时间复杂度:O(N)
返回值:匹配 pattern 的所有 key
pattern:包含特殊符号的字符串,翻译成"样式"或者"模式",存在的意义,对匹配字符串要求的描述

pattern 支持的匹配符

  1. ?:匹配任意一个字符
    示例:h?llo 匹配 hellohallohxllo
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"

  1. *:匹配0个或者多个任意字符
    示例:h*llo 匹配 hlloheeeello
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

  1. [][ae]只能匹配到 a, e。相当于选择题给出固定的选项
    示例:h[ae]llo 匹配 hellohallo, 但不匹配 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"

  1. [^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"


  1. [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 会产生更多轮次的网络通信,效率更低,成本更高

redis如何退出订阅 redis退出命令_redis


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

示例:

  1. none
127.0.0.1:6379> type key1
none
  1. string
127.0.0.1:6379> set key2 222
OK
127.0.0.1:6379> type key2
string
  1. list
127.0.0.1:6379> lpush key3 111 222 333
(integer) 6
127.0.0.1:6379> type key3
list
  1. set
127.0.0.1:6379> sadd key4 111 222 333
(integer) 1
127.0.0.1:6379> type key4
set
  1. 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 的类型