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-serverRedis服务器
redis-cli RedisRedis命令行客户端
redis-check-aofAOF文件修复工具
redis-check-dumpRDB文件检查工具
redis-sentinel SentinelSentinel服务器

启动方式

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(不以守护进程启动)
port6379
logfileRedis系统日志
dirRedis工作目录

redis数据结构和内部编码

在这里插入图片描述

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毫秒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Effective C++学习第二天

1:确保对象被使用前已先被初始化,读取未初始化的值会造成不明确的行为,可能导致程序终止运行或者其他不可预期的现象;在C中,当你使用C part of C(C中C语言部分的内容)且初始化可能导致运行期成本&#xff0…

Redis运维和开发学习笔记(3)redis搭建集群

Redis运维和开发学习笔记(3)redis搭建集群 文章目录Redis运维和开发学习笔记(3)redis搭建集群Redis集群搭建Redis集群搭建 cp /etc/redis.d/redistest_7001.conf /etc/redis.d/redistest_XXXX.conf :%s/7001/xxxx/g 配置文件内容:cluster-enabled yes ############…

Effective C++学习第三天

1:为多态基类声明virtual析构函数当我们创建一个base class指针指向新生成的derived class时,当删除基类指针时,如果base class是一个non-virtual析构函数时,实际执行的结果通常是derived class中的base成分被销毁,der…

linux创建指定大小的文件

一、生成文件大小和实际占空间大小一样的文件 dd if/dev/zero ofname.file bs1M count1 文件名称name.file bs1M表示每一次读写1M数据,count50表示读写 50次,这样就指定了生成文件的大小为50M。 二、生成文件大小固定,但实际不占空间命令 …

Effective C++学习第四天

条款11:在operator中处理自我赋值的现象虽然我们在平时可能不会出现显示自我赋值的现象,当加入指针或者引用时,可能会出现不同的指针或引用指向同一对象(对象的不同别名),这时候我们就得考虑对象是否是同一…

Effective C++学习第五天

条款14:在资源管理类中小心copy行为当我们深入理解“资源取得时机是初始化时机(RAII)”概念,并以此作为“资源管理类”的核心时,我们可能会遇到将RAII对象复制的情况,一般有两种情况处理这个现象&#xff1…

Redis运维和开发学习笔记(2) redis持久化

Redis运维和开发学习笔记(2) redis持久化 文章目录Redis运维和开发学习笔记(2) redis持久化持久化持久化方式一:RDB触发~~的三种~~方式1. save命令2. bgsave配置触发机制RDB 总结持久化方式二:AOFAOF的三种策略三种策略的优缺点AOF重写机制持久化 redis将所有数据保存在内存中&…

Effective C++学习第六天

条款18:让接口更容易被正确使用,不易被误用设计接口的原则:正确性、高效性、封装性、维护性、延展性以及协议的一致性;设计原则:1)导入新类型来预防很多客户端的错误,多使用系统类型&#xff08…

Redis运维和开发学习笔记(4) Redis参数意义

Redis运维和开发学习笔记(4) Redis参数意义 文章目录Redis运维和开发学习笔记(4) Redis参数意义参数意义参数意义 Client连接 问题 id567800790 addr10.18.17.217:37310 fd1572 name age2039114 idle2034860 flagsN db0 sub0 psub0 multi-1 qbuf0 qbuf-free0 obl0 oll0 omem0 …

Effective C++学习第七天

条款23:宁以non-memeber、non-friend替换member函数non-member/non-friend可以给对象带来更大的封装性,从两个方面来考虑:1)考虑封装,越多东西被封装,它们就越不可见,就越少人看到它&#xff0c…

Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式

Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式 主从复制 将主节点的数据改变同步给从节点 作用 备份数据读写分离 存在的问题: 手动干预切主等操作主节点的写能力受到单机限制主节点的存储能力受到单机限制 主从模式的故障恢复 当主节点发生故障时&am…

Effective C++学习第八天

条款26:尽可能延后变量定义式的出现时间当你定义了一个变量,如果在使用变量之前出现异常,那么你得承受一次构造成本和析构成本,而且你没有使用该变量;本条款给出的建议是延迟变量的定义,直到非得使用该变量…

Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令

Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 文章目录Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令info serverinfo clientinfo memoryinfo persistenceinfo statsinfo commandstatsinfo cpuinfo clusterinfo keyspaceinfo server Redis服务器相关的通用…

Effective C++学习第九天

条款32:确定你的public继承塑模出is-a模型class D(derived)以public形式继承class B(base),则每一个类型为D的对象同时也是一个类型为B的对象,反之不成立,因此B比D表现出更加一般化的…

Effective C++学习第十天

条款36:绝不重新定义继承而来的non-virtual函数non-virtual函数执行的是静态绑定,在编译器就已经决定,因此对象对用的函数只和指针的类型有关,而与指针所指的对象无关;记住non-virtual函数的性质:不变性凌驾…

Redis运维和开发学习笔记(7) 内存管理和过期策略

Redis运维和开发学习笔记(7) 内存管理和过期策略 文章目录Redis运维和开发学习笔记(7) 内存管理和过期策略内存回收策略惰性删除定时任务删除maxmemory过期策略allkeys-lru主从搭建测试搭建完毕主从测试结果volatile-lru测试结果volatile-ttl测试结果allkeys-lru内存回收策略 …

Effective C++学习第十一天

条款41:了解隐式接口和编译期多态面向对象编程世界总是以显式接口(源码可见的接口)和运行期多态(virtual)解决问题;对于templates及泛型编程的世界,隐式接口和编译期多态显得更加重要&#xff1…

Redis源码分析(零)学习路径笔记

文章目录第一阶段第二阶段 熟悉Redis的内存编码结构第三阶段 熟悉Redis数据类型的实现第四阶段 熟悉Redis数据库的实现第五阶段 熟悉客户端和服务器端的代码实现第六阶段 这一阶段主要是熟悉Redis多机部分的代码实现关于测试方面的文件有一些工具类的文件如下SORT命令的实现一些…

Effective C++学习第十二天

条款47:请使用traits classes表现类型信息STL有五类迭代器分类,input迭代器(只读,一次,向前)、output迭代器(可写,一次,向前)、forward迭代器(读/…

Redis源码分析(一)redis.c //redis-server.c

Redis源码分析(一)redis.c //redis-server.c 入口函数 int main() 4450 int main(int argc, char **argv) {4451 initServerConfig();4452 if (argc 2) {4453 ResetServerSaveParams();4454 loadServerConfig(argv[1]);4455 …