Redis-0-基础知识点

全局命令

查看所有键

命令:keys *

注意事项:

键总数

命令:dbsize

注意事项:dbsize命令在计算键总数时并不会遍历所有键而是直接获取Redis内置的键总数变量,因此dbsize命令的时间复杂度是O(1);keys命令是获取所有键的名称,因此keys命令会遍历所有键,因此keys命令的时间复杂度是O(n),当Redis保存了大量的键时禁止使用keys命令

检查键是否存在

命令:exists key

注意事项:如果key存在则返回1,否则返回0

删除键

命令:del key [key...]

注意事项:del是一个通用命令,无论是什么数据结构类型都可以将其删除;返回结果是成功删除键的个数,如果删除一个不存在的键则返回0

键过期

命令:expire key seconds

注意事项:当超过过期时间后会自动删除键,例如:expire hello 10

查看过期时间

命令:ttl key

注意事项:ttl命令返回键的剩余过期时间,如果返回值是大于等于0的整数则代表键剩余的过期时间、如果返回值是-1则代表该键没有设置过期时间、如果返回值是-2则代表该键不存在。

键的数据结构类型

命令:type key

注意事项:如果key存在则返回其类型,否则返回none

数据结构

字符串string、哈希hash、列表list、集合set、有序集合zset,每种数据结构在底层编码实现时有多种实现,方便在不同场合选择合适的内部编码。

每种数据结构在底层代码至少有2种以上的编码实现,有点类似于JAVA代码的接口。可以通过object encoding key命令来查询某变量的底层实现方式。

这种设计方式有2个优点:由于类似于JAVA接口设计当底层发生改动时调用方无需任何修改、针对不同的数据量和场景Redis选择合适的底层实现逻辑。

单线程架构

基于单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。

单线程架构:当多个客户端发送命令到服务端时,这些命令被放入一个队列中,然后Redis单线程逐个执行队列中的命令。

单线程架构还能满足高并发,出于下面3个原因:

  1. 纯内存访问。
  2. 非阻塞I/O,Redis使用epoll来作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭转换为Redis事件,不在网络I/O上浪费太多时间。
  3. 单线程避免了多线程之间切换、锁竞争带来的消耗。

单线程架构的优缺点:

优点:单线程可以简化数据结构和算法的实现、避免多线程切换、锁竞争带来的消耗。

缺点:单线程串行执行命令,因此对命令的执行时间有要求,否则会因为某个命令执行时间过长导致后续其他命令处于等待状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值