Redis相关

Posted by 排球混子 on January 9, 2024

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的类型
数据结构和内部编码

20240111213520

单线程
介绍
  • 纯内存
  • 非阻塞io
  • 避免线程切换和竞态消耗
    • 线程切换开销?
      • cpu寄存器的保存与恢复
      • 栈内存的切换
      • 缓存失效
    • 竞态消耗
      • 多线程试图同时修改或读取共享数据
        注意事项
  • 一次只允许一条命令
  • 拒绝长(慢)命令
    keys, flushall, flushdb, slow lua script, 
    mutil/exec, operate big value(collection)
    

Redis其他功能

慢查询

生命周期

20240109222031 说明

  • 慢查询发生在第三阶段
  • 客户端超时不一定是慢查询,但慢查询是客户端超时的一个可能因素
慢查询命令
  • slowlog get [n]: 获取慢查询队列
  • slowlog len: 记录慢查询队列长度
  • slowlog reset: 清空慢查询队列

pipeline

介绍

Redis pipeline是一种性能优化技术,用于在单个网络往返中发送和接收多个Redis命令。这种方法可以显著提高执行大量命令的效率,尤其是在网络延迟较高的环境中。