《Redis开发与运维》- API的使用-1-全局命令

13 篇文章 0 订阅
3 篇文章 0 订阅

Redis API的使用

1. 全局命令

1.1查看所有键:keys *

1.2键总数:dbsize
【dbsize】命令在计算总数时不会遍历所有的键,而是直接获取Redis内置的键总数,所以dbsize的时间复杂度是O(1),而keys命令会遍历所有键,所以时间复杂度是O(n)。

1.3检查键是否存在 :exists key
【存在返回1,不存在返回0】

1.4删除键 :del key [key …]
【支持删除多个键】

1.5设置键过期:expire key seconds
【超过过期时间,会自动删除】
ttl命令会返回键的剩余过期时间,有三种返回值:
大于等于0的整数,键剩余的过期时间。
-1:键没设置过期时间。
-2:键不存在

1.6键的数据结构类型:type key
【如果键不存在,返回none】

2.数据结构和内部编码

type命令实际返回的是当前键的数据结构类型,分别是:
string,hash,list,set,zset 这五种数据结构,但是实际每种数据结构都有自己底层的内部编码实现,而且是多实现,Redis会在合适的场景选择合适的内部编码。如图:
在这里插入图片描述

可以通过 >object encoding key 命令查询内部编码
Redis这样设计有两个好处:
1:可以改进内部编码,而对外的数据结构和命令没有影响,这样一旦开发出更优秀的内部编码,无需改动外部数据结构和命令。如:Redis3.2版本提供了quicklist,结合了ziplist和linkedlist两者的有事,为列表类型提供了一种更为优秀的内部编码实现,而对外部用户来说基本感觉不到。
2:多种内部编码实现可以在不同场景下发挥各自的有事,例如ziplist比较节省内存,但是在列表元素比较多的情况下,性能会下降,这时候Redis会根据配置选项将列表类型的内部实现转换为linkedlist。

3.单线程架构

为什么单线程还能这么快?原因有三点:
1:纯内存访问。
2:非堵塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上redis自身的事件处理模型将epoll中的连接,读写,关闭都转化为事件,不在网络IO上浪费时间。
3:单线程避免了线程切换和竞态产生的消耗。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值