通用命令
- keys:查看所有的 key 复杂度 o(n)
- dbsize: 计算 key 的总数,复杂度 O(1)
- exists: 检查 key 是否存在,复杂度 O(1)
- del: 删除指定 key-value, 复杂度 O(1)
- expire key seconds:key 在 second 秒后过期, 复杂度 O(1)
- ttl key:查看 key 多久过期 , 复杂度 O(1)
- persist key: 去掉 key 的过期时间, 复杂度 O(1)
- type key: 返回 key 的类型, 复杂度 O(1)
数据结构和内部编码
单线程架构
单线程为什么这么快
* 纯内存
* 非阻塞 IO
* 避免线程切换和竞态消耗
单线程注意什么
* 一次只运行一条命令
* 拒绝长(慢)命令
* 其实不是单线程
fysnc file descrptor
close file descriptor
5 中数据结构
1. 字符串
key value
hello world
counter 1
bits 1010101022
最大 512M
场景
- 缓存
- 计数器
- 分布式锁
常见命令
get
set key value #不管 key 是否存在,都设置
setnx key value #key 不存,才设置
set key value xx#key 存在,才设置
del
incr o(1)
decr o(1)
incrby o(1)
decrby o(1)