redis-学习笔记(通用命令)

redis-cli

打开 redis 自带的命令行客户端
在这里插入图片描述

redis-cli --raw

显示中文格式的 打开 redis 自带的命令行客户端
redis 是读存数据不进行会格式转换, 简单说就是什么格式存就是什么格式取, 因此读取数据的时候会以二进制格式输出汉字
不使用 --raw 则会, 以十六进制的格式显示中文字符 “\xd6\xd0”

set key value – O(1)

设置 key 值 和 value 值 (键 值 对)

get key – O(1)

根据 key 来取 value 值
默认使用 字符串类型, 此处 key 和 value 加不加 引号, 单引号还是双引号, 看你心情, 因为不影响, 都会被识别为 字符串格式
在这里插入图片描述

keys pattern – O(N)

模式(通配符)匹配
(没事别乱用, redis 一般是替 MySQL 负重前行的, 生产模式下[正式工作], 一个 Redis 中贼拉多数据, 你扫一遍其他任务还做不做了, 查询 redis 失败后, 会去直接查询数据库(MySQL …), 大量任务一涌入, MySQL 就寄了, 年终奖也就寄了)
在这里插入图片描述

exist key [key …] – O(N)

判定 key 值是否存在, 可公式判断多个
返回的值是上述判断 key 值的存在个数
在这里插入图片描述

del key [key …] – O(N)

删除指定 key, 删了key,该 key 对应的 value 自然也不存在了
同理, 返回删除成功 的个数
在这里插入图片描述

expire key seconds 秒 / pexpire key 毫秒 – O(1)

expire 作用是给指定的 key 设置过期时间 - key存货时间超出这个数值, 就会自动删除

ttl key – O(1)

ttl 查询过期时间 (time to live)

redis 的 key 的过期策略是怎么实现的?
一个 redis 中会同时存在很多 key, 这些 key 中可能有很大一部分有过期时间.
此时, redis 服务器如何知道哪些 key 已经过期要被删除, 哪些 key 还没过期.
整体策略如下:

  1. 定期删除
    每次抽取一部分, 进行验证过期时间
    保证整个抽取检查的过程足够快
    (因为如果扫描过期 key 消耗的时间太多, 会导致正常处理请求命令被阻塞)
  2. 惰性删除
    到了过期时间, 还不会被删除,
    只有当被访问到, 会让 redis 触发删除 key 的操作, 再返回一个 nil
  3. 定时删除
    在设置 key 过期时间的同时, 为该 key 创建一个定时器, 让定时器在 key 的过期时间来临时, 对 key 进行删除.
    (但是如果在过期时间来临前, 来了一个时间很长的请求, 你就会错过这次删除时间, 导致它活了更长时间)
  • redis 并没有采取 定时器 的方式来实现过期 key 删除
  • 如果有多个 key 过期, 也会通过一个 定时器(基于优先级队列或者时间轮) 来高效 / 节省 cpu 的前提下来处理多个 key
    – 基于优先队列: 定期检查队首元素, 队首没过期, 其他的肯定就都没过期
    – 基于时间轮: 将时间分为很多段, 每个小段上挂一个链表, 链表上代表该任务在该时间内运行
    在这里插入图片描述

type key – O(1)

type 返回 key 对应值 的类型
value 对应的格式: none , string , list , set , zset , hash , stream

object encoding key – O(1)

查看 key 对应的 value 的编码方式
当数据大小不同时, 即使是同一类型的数据存储, 他们的底层编码方式也不一样

flushall

删除 redis 上的所有键值对
也会带走你的年终奖 (不是)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值