Redis 简介(一)

Redis笔记

Redis 单线程

Redis 是单线程吗?

Redis的单线程主要是指 Redis的网络IO和键值读写是由一个线程完成的,但Redis功能:持久化、异步删除、集群数据同步等,都是由额外的线程来实现的。

Redis 为什么能这么快?

  • 数据是存储在 内存 中,运算都是在内存中进行
  • 单线程 避免线程切换带来的性能损耗问题
  • 避免耗时指令的执行!会导致 Redis卡顿

Redis单线程如何处理那么多并发客户端连接?

靠的是Redis的 IO多路复用,redis利用 epoll 来实现IO多路复用

  • 将连接信息和事件放到队列
  • 依次放到文件事件分派器
  • 事件分派器将事件分发给事件处理器

Redis处理事件和连接流程

Redis处理连接事件的流程

# 查看redis支持的最大连接数,在redis.conf文件中可修改,# maxclients 10000
127.0.0.1:6379> CONFIG GET maxclients
##1) "maxclients"
##2) "10000"

高级命令

keys

定义:

全量遍历键,用来列出所有满足特定正则字符串规则的key,当 redis数据量比较大时,要避免使用

例子:

在这里插入图片描述

scan

定义:

渐进式遍历键 scan cursor [匹配模板] [遍历key的数量]

  • cursor —— hash桶的索引值
  • 遍历key的数量 —— 一次遍历多少个key,是一个大概的值,不一定准确

注意:

scan不保证能完整的遍历出所有的键,scan过程中如果有键的变化,则

  • 新增的键可能没有遍历到
  • 遍历到重复的键

例子:

在这里插入图片描述

Info

定义:

查看 redis 服务运行信息,分为

  • Server —— 服务器运行的环境参数

    connected_clients:2 # 正在连接的客户端数量
    
    instantaneous_ops_per_sec:789 # 每秒执行多少次指令
    
    used_memory:929864 # Redis分配的内存总量(byte),包含redis进程内部的开销和数据占用的内存
    used_memory_human:908.07K # Redis分配的内存总量(Kb,human会展示出单位)
    used_memory_rss_human:2.28M # 向操作系统申请的内存大小(Mb)(这个值一般是大于used_memory的,因为Redis的内存分配策略会产生内存碎片)
    used_memory_peak:929864 # redis的内存消耗峰值(byte)
    used_memory_peak_human:908.07K # redis的内存消耗峰值(KB)
    
    maxmemory:0 # 配置中设置的最大可使用内存值(byte),默认0,不限制
    maxmemory_human:0B # 配置中设置的最大可使用内存值
    maxmemory_policy:noeviction # 当达到maxmemory时的淘汰策略
    
  • Clients —— 客户端相关信息

  • Memory —— 服务器运行内存统计数据

  • Persistence —— 持久化信息

  • Stats —— 通用统计数据

  • Replication —— 主从复制相关信息

  • CPU —— CPU 使用情况

  • Cluster —— 集群信息

  • KeySpace —— 键值对统计数量信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值