【Redis开发与运维】学习笔记(二)-----Redis全局命令及单线程架构

Redis全局命令

查看所有键
Keys *
键总数
dbsize
dbsize命令在计算键总数时不会遍历所有键,而是直接获取Redis内置的
键总数变量,所以dbsize命令的时间复杂度是O(1)。而keys命令会遍历所
有键,所以它的时间复杂度是O(n),当Redis保存了大量键时,线上环境
禁止使用。
检查键是否存在
exists key
如果键存在则返回1,不存在则返回0
删除键
返回结果为成功删除键的个数,假设删除一个不存在的键,就会返回0,支持删除各种类型的数据以及一条命令删除多个数据
del key [key …]
键过期
Redis支持对键添加过期时间,当超过过期时间后,会自动删除键
expire key second: 键在seconds秒后过期
expireat key timestamp:键在秒级时间戳timestamp后过期。
查看键剩余过期时间
ttl key
ttl命令会返回键的剩余过期时间,单位是秒,它有3种返回值:1. 大于等于0的整数:键剩余的过期时间;2.·-1:键没设置过期时间;3. ·-2:键不存在。
pttl key
pttl 命令会返回键的剩余过期时间,单位是毫秒
键的数据结构类型
type key
如果键不存在,则返回none.
键重命名
rename key newkey
确保只有newKey不存在时候才被覆盖
renamenx key newkey
随机返回一个键
randomkey

Redis五种数据类型以及其内部编码

type key的名字可以看到其数据类型,而object encoding key的名字 命令可以查询内部编码。
在这里插入图片描述

Redis 单线程架构

Redis客户端和服务端请求过程
因为Redis是单线程来处理命令的,所以一条命令从客户端达到服务端不会立刻被执行,所有命令都会进入一个队列中,然后逐个被执行。为了保证命令执行的高效性,Redis使用了I/O多路复用技术来解决I/O的问题。
在这里插入图片描述
为什么单线程还这么快?

  1. 纯内存访问
  2. 非阻塞I/O
  3. 单线程避免了线程切换和竞态产生的消耗

Redis非阻塞I/O原型
在这里插入图片描述

单线程的缺点:
对于每个命令的执行时间是有要求的。如果某个命令执行过长,会造成其他命令的阻塞。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值