【Redis】常用命令

目录

set(存储key和value)

get (通过key获取value)

KEYS(查找符合样式的key)

exists(判断key是否存在)

del(删除key)

expire(给key设置过期时间)

ttl (查询key的过期时间)

type(查询key对应的value的数据类型)


redis命令不区分大小写的

要使用redis命令,需要先输入redis-cli进入redis客户端

redis是按照键值对的方式存储数据的,redis最核心的两个命令:

        get:根据key来取value

        set:把key和value存储进去

set(存储key和value)

格式如下:

set key value

其中key和value都是字符串,不需要加上引号,加上的话也可以

get (通过key获取value)

格式如下:

get key

如果查询不存在的key,会返回一个nil 

redis 有5中数据结构,但他们都是键值对中的值,对于键来说有一些通用的命令。

KEYS(查找符合样式的key)

返回所有满足样式(pattern)的key,例如

  • h?llo 匹配 hello,hallo,hxllo
  • h*llo 匹配 hllo,heeeello
  • h[ae]llo 匹配hello 和 hallo,不匹配hillo
  • h[^e]llo匹配hallo,hbllo,但不匹配hello
  • h[a-b]llo 匹配hallo和hbllo

语法:

keys pattern

  • ?匹配任意一个字符
  • *匹配0个或者多个任意字符
  • [abcde]只能匹配abcde,别的不行
  • [^e]排除e
  • [a-b]匹配a-b这个范围内的字符

keys命令的时间复杂度是O(N),所以,在生产环境上,一般禁止使用

exists(判断key是否存在)

判断某个key是否存在

语法:

exists key [key ...]

后面可以跟一个key,也可以跟多个,至少要有一个

时间 复杂度O(1),返回值是key存在的个数。

  • redis支持很多数据结构,指的是一个一个value可以是一些复杂的数据结构。
  • redis自身的这些键值对,是通过哈希表的方式来组织的。
  • redis具体的某个值又可以是一些数据结构。

查询的时候,分开查询,需要向服务器进行两个轮次的网络通信,因此会比较慢 。

del(删除key)

删除指定的key。

语法:

del key [key ..]

可以删除一个或者多个

时间复杂度:O(1)

返回值:删掉的key的个数 。

redis中误删除一个两个key问题不大,因为redis大部分是作为缓存,存储热点数据,mysql中存有全量的数据,但是不能全删或者删除大量,这样所有请求都直接去找mysql,容易把mysql搞挂了。

expire(给key设置过期时间)

给指定的key设置过期时间。设置的时间单位是秒,key的存活时间超过过期时间,会自动删除。

语法:

expire key seconds

时间复杂度:O(1);

返回值:1表示设置成功,0表示设置失败。

pexpire可以设置的时间单位是毫秒,语法与expire一致。

ttl (查询key的过期时间)

获取指定key的过期时间,秒级。

语法:

ttl key

时间复杂度:O(1);

返回值:剩余过期时间,-1表示没有关联过期时间,-2表示key不存在

pttl可以查看pexpire

reids 的过期策略是怎么实现的?

一个redis中可能同时存在很多很多key,这些key中可能有很大一部分都有过期时间,此时,服务器咋知道哪些key已经过期要被删除,哪些key还没过期?

如果直接遍历所有的key,显然是行不通的,效率非常低。redis整体的策略是:

  1. 定期删除
  2. 惰性删除

惰性删除:假设这个key已经到过期时间了,但是暂时还没删它,key还存在,紧接着,后面又一次访问,正好用到了这个key,于是这次访问就会让redis服务器触发删除key的操作,同时再返回一个nil。

定期删除:每次抽取一部分,进行验证过期时间,抽取一部分保证抽取检查的过程足够快,这里要保证速度快的原因是因为redis是单线程的程序,主要的任务是处理每一个命令的任务,如果扫描key的时间太多了,就可能导致正常处理请求命令就被阻塞了。

虽然有了上述两种策略结合,整体的效果一般,仍然可能会有很多过期的key残留,没有及时删除。

type(查询key对应的value的数据类型)

返回key对应的数据类型。

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

语法:

type key

时间复杂度O(1)

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值