【Redis】redis通用命令

redis通用命令

最核心命令:get 和 set

Redis官网

redis是按照键值对的方式存储数据的.

Redis中最核心的两个命令.

  • get: 根据key来取value
    • 语法:set key value(key和value都是字符串)
  • set: 把key和value存储进去
    • 语法:get命令直接输入key就能得到value.

对于上述这里的key value,不需要加上引号,就是表示字符串的类型。当然,如果要是给key和value加上引号,也是可以的(单引号或我者双引号都行)。同时redis中的命令不区分大小写。

如果当前key不存在,会返回nil。nil和null/NULL是一个意思

set key1 value1
set key2 value2
set "key3" "value3" 
get key1
get key2
get key3

基本全局命令

Redis支持很多种数据结构,指的是一个value可以是一些复杂的数据结构。整体上来说,Redis是键值对结构。key固定就是字符串,value实际上会有多种类型。操作不同的数据结构。就会有不同的命令。

redis的基本数据类型:字符串,哈希表,列表,集合,有序集合。

keys 用来查看匹配规则的key

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

pattern:包含特殊符号的字符串。有的地方翻译成"样式"或者"模式"。重点去认识这个英文术语。存在的意义,是去描述另外的字符串长啥样的。

patten具体是咋写的,支持哪些通配符呢?

准备工作:

127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> set hallo 1
OK
127.0.0.1:6379> set hbllo 1
OK
127.0.0.1:6379> set hllo 1
OK
127.0.0.1:6379> set heeeeeeeeello 1
OK

案例:

127.0.0.1:6379> keys h[a-b]llo
1) "hallo"
2) "hbllo"-- ?匹配任一字符
127.0.0.1:6379> keys h?llo
1) "hello"
2) "hallo"
3) "hbllo"
-- *匹配0个或者多个任意字符
127.0.0.1:6379> keys h*llo
1) "hello"
2) "hllo"
3) "hallo"
4) "heeeeeeeeello"
5) "hbllo"
-- [abcde]只能匹配到abcde,别的不行.相当于给出固定的选项了
127.0.0.1:6379> keys h[abe]llo
1) "hello"
2) "hallo"
3) "hbllo"
-- [^e]排除e,只有e匹配不了.其他的都能匹配.
127.0.0.1:6379> keys h[^ae]llo
1) "hbllo"
-- [a-b]匹配a-b这个范围内的字符.包含两侧边界.
127.0.0.1:6379> keys h[a-b]llo
1) "hallo"
2) "hbllo"

注意事项:

keys命令的时间复杂度是O(N)。所以,在生产环境上,一般都会禁止使用keys命令.尤其是大杀器keys *查询redis中所有的key。生产环境上的key可能会非常多,而redis是一个单线程的服务器。执行keys*的时间非常长,就使redis服务器被阻塞了,无法给其他客户端提供服务。

exists 判定key是否存在

exists:判定key是否存在。

  • 返回值: key存在的个数。针对多个key来说,是非常有用的。
  • 时间复杂度: O(1)

语法:EXISTS key [key …]

使用:

-- 直接判断两个key是否存在
127.0.0.1:6379> exists hello hallo
(integer) 2
-- 分别判断每个key是否存在
127.0.0.1:6379> exists hello
(integer) 1
127.0.0.1:6379> exists hallo
(integer) 1

分开的写法,会产生更多轮次的网络通信。和直接操作内存比,效率比较低,成本比较高。

del 删除指定的key

del (delete): 删除指定的key。可以一次删除一个或者多个.

  • 时间复杂度:O(1)
  • 返回值:删除掉的key的个数。

语法:DEL key [key …]

使用:

127.0.0.1:6379> del hllo
(integer) 1
127.0.0.1:6379> del hello hallo aaa
(integer) 2

redis主要的应用场景,就是作为缓存。此时redis里存的只是一个热点数据,全量数据是在mysql数据局车中。此时。如果把redis中的key删除了几个,一般来说,问题不大。但是,当然如果把所有的数据或者一大半数据一下都干没,这种影响会很大。本来redis是帮mysql负重前行,redis没数据了,大部分的请求就直接打给mysql然后就容易把mysql搞挂。

如果是把redis作为数据库,此时误删数据的印象就大了。
如果是把redis作为消息队列(mq),这种情况误删数据影响大不下大,就需要具体问题具体分析了。

expire 设置过期时间

expire作用: 给指定的key设置过期时间。设置的时间单位是秒,key存活时间超出这个指定的值,就会被自动删除。

pexpire 的作用和expire是几乎一样的,不同的是单位为毫秒

此处的设定过期时间,必须是针对已经存在的key设置.

  • 返回值:设置成功返回1,设置失败返回0.
  • 时间复杂度:O(1)

语法:EXPIRE key seconds

-- 添加一个键值对
127.0.0.1:6379> set hello 111
OK
-- 设置过期时间
127.0.0.1:6379> expire hello 10
(integer) 1
-- 获取hello中的值
127.0.0.1:6379> get hello
"111"
-- 过一段时间获取
127.0.0.1:6379> get hello
(nil)

ttl 查询过期时间

ttl(time to live):查看当前key的过期时间还剩多少
pttl:以毫秒为单位

  • 时间复杂度:0(1)
  • 返回值:剩余过期时间。-1表示没有关联过期时间,-2表示key不存在。
127.0.0.1:6379> expire hello 10
(integer) 1
127.0.0.1:6379> ttl hello
(integer) 6
127.0.0.1:6379> ttl hello
(integer) 5
127.0.0.1:6379> ttl hello
(integer) 3
127.0.0.1:6379> ttl hello
(integer) -2

type 返回key对应的数据类型

此处redis所有的key都是string,key对应的value可能会存在多种类型。

返回值:none,string,list,set, zset, hash and stream(redis作为消息队列的时候,使用这个类型的value)
redis的常用基本数据类型:
image-20240222214026848
时间复杂度:O(1)

使用:

127.0.0.1:6379> set key1 111
OK
127.0.0.1:6379> type key1
string
127.0.0.1:6379> lpush key2 111 222 333
(integer) 3
127.0.0.1:6379> type key2
list
127.0.0.1:6379> sadd key3 111 222 333
(integer) 3
127.0.0.1:6379> type key3
set
127.0.0.1:6379> hset key4 fielf1 vlaue1
(integer) 1
127.0.0.1:6379> type key4
hash

object encoding key

object encoding key: 查看key对应的value的实际编码方式.

127.0.0.1:6379> object encoding key1
"int"
127.0.0.1:6379> object encoding key2
"quicklist"
127.0.0.1:6379> object encoding key3
"intset"
127.0.0.1:6379> object encoding key4
"ziplist"

相关推荐

  1. Qt 通过命令行编译程序

    2024-03-23 11:34:02       41 阅读
  2. GBASE南大通用分享-mysql初始化命令

    2024-03-23 11:34:02       36 阅读
  3. 前端通用命名规范和Vue项目命名规范

    2024-03-23 11:34:02       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 11:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 11:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 11:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 11:34:02       20 阅读

热门阅读

  1. 代码随想录算法训练营 Day27 回溯算法3

    2024-03-23 11:34:02       19 阅读
  2. Python从入门到精通秘籍十六

    2024-03-23 11:34:02       17 阅读
  3. 100个python代码(三)

    2024-03-23 11:34:02       17 阅读
  4. Linux 系统中 OpenCV-Python 编程环境

    2024-03-23 11:34:02       21 阅读
  5. Codeforces Round 935 (Div. 3)

    2024-03-23 11:34:02       21 阅读
  6. mybatisplus和mybatis兼容问题

    2024-03-23 11:34:02       20 阅读
  7. 第十三节 JDBC异常

    2024-03-23 11:34:02       17 阅读
  8. 计算机网络复试总结(五)

    2024-03-23 11:34:02       17 阅读
  9. vue2,style标签中引用data变量

    2024-03-23 11:34:02       18 阅读
  10. CSP认证——202012-1 期末预测之安全指数

    2024-03-23 11:34:02       17 阅读