# Redis运维和开发学习笔记(1) Redis简介

文章目录

  • Redis的特性
    • 速度快
    • 持久化
    • 多种数据结构
    • 主从复制
    • 高可用和分布式
  • 典型的应用场景
  • Redis启动和可执行文件
    • Redis可执行文件说明
    • 启动方式
    • 验证redis
    • redis常用配置
  • redis数据结构和内部编码
  • Redis是单线程,不会同时执行两条命令
  • 哈希
  • 慢查询
    • pipeline

Redis的特性

速度快

性能:10w ops(每秒10w次读写)

  • Redis 使用内存(寄存器>一级缓存>二级缓存>内存>本地磁盘>远程磁盘)

持久化

特点:断电不丢失数据

  • Redis将数据保存在内存,将更改数据异步保存在磁盘

多种数据结构

BitMap
GEO:地理位置定位
HyperLogLog:粗略的唯一计数

主从复制

高可用和分布式

  • Redis-Sentinel高可用
  • Redis-Cluster分布式

典型的应用场景

  • 缓存系统
    • 一个用户访问一个APP Server —> 缓存 —> Storage
  • 计数器
    • 视频播放,点击次数进行计数
  • 消息队列系统
  • 排行榜
  • 实时系统

Redis启动和可执行文件

Redis可执行文件说明

redis-server Redis服务器
redis-cli Redis Redis命令行客户端
redis-check-aof AOF文件修复工具
redis-check-dump RDB文件检查工具
redis-sentinel Sentinel Sentinel服务器

启动方式

redis-server --port 6379(默认端口)
redis-server configPath
redis-cli -h (ip) -p (port)

验证redis

ps -ef | grep redis
netstat -antpl | grep redis
redis -cli -h (ip) -p (port) ping

redis常用配置

daemonize 默认no(不以守护进程启动)
port 6379
logfile Redis系统日志
dir Redis工作目录

redis数据结构和内部编码

# Redis运维和开发学习笔记(1) Redis简介_第1张图片

Redis是单线程,不会同时执行两条命令

  • 为什么redis的单线程很快
    • 纯内存–主要原因
    • 非阻塞IO(epoll多路复用)
    • 单线程避免了线程切换和静态消耗
  • 一次只运行一条命令
  • 不使用慢命令(keys,flushall,flushdb,slow lua script, mutil/exec, operate big value(collection)
  • 不是单线程
    • fysnc file descriptor

哈希

慢查询

  • 客户端请求的生命周期

    • 发送命令
    • 排队
    • 执行命令(慢查询发生的时间)
    • 返回结构
  • 两个配置

    • slowlog-max-len
    1. 先进先出的队列
    2. 固定长度
    3. 保存在内存
    • slowlog-log-slower-than
      1. 慢查询阈值
      2. =0, 记录所有命令
    • 配置方案
      • config get slowlog-max-len = 128
      • config get slowlog-log-slower-than = 10000
      • 动态配置
      • config set slowlog-max-len = 128
      • config set slowlog-log-slower-than = 10000
  • 三个命令

    • slowlog get [n]: 获取慢查询队列
    • slowlog len: 获取慢查询队列长度
    • slowlog reset: 清空慢查询队列
  • 运维经验

    • slowlog-max-len通常为1ms
    • slowlog-log-slower-than通常1000
    • 理解命令的生命周期
    • 定期持久化慢查询日志(方便后期查询历史)

pipeline

  • 什么是流水线?
    • 一次网络携带多条命令。
    • redis的命令式微妙级别
    • pipeline每次条数要控制(网络)
      光速=3*108米/秒=30000公里/秒距离=1300公里
      光纤传输速度≈光速的2/3
      一次命令传输时间=(1300*2)/(300000*2/3)=13毫秒
      执行一条命令几微妙,执行一条网络要13毫秒。

你可能感兴趣的:(数据库)