全局命令
- 查看所有的键,o(n),线上应禁止使用
keys *
- 查看键总数,o(1)
dbsize
- 检查键是否存在
exists $key
- 删除键
del $key...
- 键过期,设置键的过期秒数,
RedisLV
不支持expire $key $seconds
查询key
的剩余有效时间,ttl $key
>0
,剩余有效时间秒-1
,无过期时间-2
,键不存在
- 键的数据结构类型
type $key
数据结构和内部编码
每种数据结构都有自己的底层内部编码实现,而且是多种实现object encoding $key
命令可以查询内部编码
数据结构
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
内部编码
优点:
- 无需改动外部数据结构和命令,即可将代码替换成更合适的数据结构
- 不同的结构在不同情况下有不同的优势
单线程架构
Redis
使用了单线程架构和I/O
多路复用模型来实现高性能的内存数据库服务.
流程
- 客户端发送命令
Redis
执行命令- 返回结果
因为是单线程,所有命令在一个队列里等待执行,不存在多个命令同时执行的情况
快的原因
- 纯内存访问
- 非阻塞I/O(内部使用epoll)
- 避免了线程切换和竞争(单线程的阻塞问题需要注意)