API的理解和使用
通用命令和数据结构
通用命令
- Keys
- O(n)不建议在线上使用
- dbsize
- O(1) 可以在线上使用,其内置了计数器
- exists key
- O(1) 存在返回1,不存在返回0,一般来说,随便使用
- expire key seconds
- O(1)
expire key seconds
key在seconds后过期ttl key
查看key的剩余过期时间persist key
去掉key的过期时间
- del key
- O(1)
- type key
- O(1) 查看key的类型
数据结构和内部编码
单线程
介绍
- 纯内存
- 非阻塞io
- 避免线程切换和竞态消耗
- 线程切换开销?
- cpu寄存器的保存与恢复
- 栈内存的切换
- 缓存失效
- 竞态消耗
- 多线程试图同时修改或读取共享数据
注意事项
- 多线程试图同时修改或读取共享数据
- 线程切换开销?
- 一次只允许一条命令
- 拒绝长(慢)命令
keys, flushall, flushdb, slow lua script, mutil/exec, operate big value(collection)
Redis其他功能
慢查询
生命周期
说明
- 慢查询发生在第三阶段
- 客户端超时不一定是慢查询,但慢查询是客户端超时的一个可能因素
慢查询命令
- slowlog get [n]: 获取慢查询队列
- slowlog len: 记录慢查询队列长度
- slowlog reset: 清空慢查询队列
pipeline
介绍
Redis pipeline是一种性能优化技术,用于在单个网络往返中发送和接收多个Redis命令。这种方法可以显著提高执行大量命令的效率,尤其是在网络延迟较高的环境中。