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,一经查实,立即删除!

相关文章

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

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

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

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

Effective C++学习第十二天

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

Linux 学习

1.linux文本命令行语言环境设置命令 查看当前语言环境: echo ¥LANG 修改: LANG选择的语言环境’ 引申:https://blog.csdn.net/huoyunshen88/article/details/41113633 2.linux中的硬链接和软连接 linux中文件的储存方式&#xf…

redis源码剖析(四)跳表

文章目录整数集合跳跃表压缩列表总结整数集合 当一个集合只包含整数,且这个集合的元素不多的时候,Redis 就会使用整数集合 intset 。首先看 intset 的数据结构: typedef struct intset {// 编码方式uint32_t encoding;// 集合包含的元素数量…

在Redis客户端设置连接密码 并演示密码登录

我们先连接到Redis服务 然后 我们要输入 CONFIG SET requirepass “新密码” 例如 CONFIG SET requirepass "A15167"这样 密码就被设置成立 A15167 我们 输入 AUTH 密码 例如 AUTH A15167这里 返回OK说明成功了 然后 我们退出在登录就真的需要 redis-cli -h IP地…

redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合

文章目录对象REDIS_STRING (字符串)REDIS_LIST 列表REDIS_SET (集合)REDIS_ZSET (有序集合)REDIS_HASH (hash表)int refcount(引用计数器)unsigned lru:REDIS_LRU_BITS对象 对于 Re…

redis源码剖析(六)—— Redis 数据库、键过期的实现

文章目录数据库的实现数据库读写操作键的过期实现数据库的实现 我们先看代码 server.h/redisServer struct redisServer{...//保存 db 的数组redisDb *db;//db 的数量int dbnum;... }再看redisDb的代码: typedef struct redisDb {dict *dict; /*…

linux中错误总结归纳

1.使用gcc编译C文件,C文件在for循环语句中出现变量定义 编译器提示错误:“for”loop initial declarations are only allowed in C99 mode. note:use option -stdc99or-stdgnu99 to compile; 原因:gcc的标准是基于c89的,c89不能在…

makefile内容小结

makefile中每个功能主要分为三部分:目标,依赖条件和命令语句 1.支持对比更新的Makefile写法(只会编译文件时.o文件和.c文件时间不一致的文件) 2.使用makefile自动变量和自定义变量的makefile写法 其中:这三个符号为ma…

事务隔离级别动图演示

事务的基本要素(ACID) 原子性(Atomicity) 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的…

linux中的man文档结构

使用命令 man chapter章节号查找的内容

linux文件操作相关函数

(1)stat函数:显示文件的相关信息(类似于 ls -l的感觉) 头文件及函数原型: 函数参数:path:文件的路径,buf是指待写入的文件信息,fd:表示文件描述符; stat,fstat,lstat三者…

linux目录操作函数

(1)chdir函数:修改当前进程的路径 函数头文件及原型: 参数:要修改的文件路径或文件描述符(一般是当前空闲最小的) 返回值:成功(0),失败&#xff0…

linux中的dup和fcntl的用法

(1)dup函数:文件描述符的拷贝 函数头文件及函数原型: 参数:原来的文件描述符,新的文件描述符,标志位; 返回值:成功(返回新的文件描述符)失败&…

使用dup2实现重定向到屏幕终端遇到问题

参考博客:https://blog.csdn.net/qq_26093511/article/details/53255970 参考博客:https://blog.csdn.net/db199410/article/details/52335450#commentBox 1.要解决的问题 通过复制文件描述符来实现文件重定向问题。 2.实现代码 2.代码输出 按照原来的…

linux操作系统之exec函数族

当我们想在进程中执行另外一个函数或程序时,可以使用exec函数。进程调用exec函数,则该进程中用户空间所有代码和数据会完全被新程序替换,但是不会创建新进程,因此进程id不会发生改变。 函数族的头文件:unistd.h l:li…

linux操作系统之子进程回收函数wait和waitpid函数小结

一个进程在终止时会关闭所有的文件描述符,释放用户空间分配的内存,但是它的PCB还保留着,内核在其中还保留着进程的一些信息:如果正常终止,则保留着退出状态;如果异常终止则保存着导致进程种植的信号。 在父…

linux操作系统进程间通信IPC之管道pipe及FIFO

linux环境下,各进程相互独立,如果想要交换两个进程之间的数据,需要通过内核,在内存中提供一个缓存区,一个进程往缓存区中写数据,一个往缓存区读数据,内核提供的这种机制称为进程间通信(IPC&…

linux操作系统进程间通信IPC之共享存储映射

(1)文件存储映射I/O(Memory-mapped I/O) 一个磁盘文件与存储空间中的一个缓存区相对应,这样可以在不适合read/write函数的情况下,使用地址(指针)完成I/O操作。具体实现通过内核指定一…