通用命令
keys pattern: 通过正则查询Redis数据库中的键
dbsize: 算出数据库的大小
exists key : 判断key是否存在
del [key...] : 删除key
expire key seconds: 设置key的过期时间
type key: 判断key的类型
各通用命令的时间复杂度
可以看到 keys时间复杂度是O(n)的,所以不建议在生产环境上使用
数据结构和内部编码
数据结构和内部编码
单线程
单线程的理解
串形的执行命令
单线程为什么这么快
纯内存
Redis是纯内存数据库,相对于读写磁盘,读写内存的速度就不是几倍几十倍了,一般,hash查找可以达到每秒百万次的数量级。
非阻塞IO---IO多路复用
“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗)。可以直接理解为:单线程的原子操作,避免上下文切换的时间和性能消耗;加上对内存中数据的处理速度,很自然的提高redis的吞吐量
没有上下文切换
Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争