当前位置: 首页 > news >正文

Redis-高性能原理剖析

redis安装

下载地址:http://redis.io/download
安装步骤:
# 安装gcc
yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
cd redis-5.0.3# 进入到解压好的redis-5.0.3目录下,进行编译与安装
make# 修改配置
daemonize yes  #后台启动
protected-mode no  #关闭保护模式,开启的话,只有本机才可以访问redis
# 需要注释掉bind
#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)# 启动服务
src/redis-server redis.conf# 验证启动是否成功 
ps -ef | grep redis # 进入redis客户端 
src/redis-cli # 退出客户端
quit# 退出redis服务: 
(1)pkill redis-server 
(2)kill 进程号                       
(3)src/redis-cli shutdown 

Redis的单线程和高性能


Redis是单线程吗?

        Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。

Redis 单线程为什么还能这么快?

        因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。

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

        Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放到文件事件分派器,事件分派器将事件分发给事件处理器。

0

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

其他高级命令


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

0

scan:渐进式遍历键

SCAN cursor [MATCH pattern] [COUNT count]

scan 参数提供了三个参数,第一个是 cursor 整数值(hash桶的索引值),第二个是 key 的正则模式,第三个是一次遍历的key的数量(参考值,底层遍历的数量不一定),并不是符合条件的结果数量。第一次遍历时,cursor 值为 0,然后将返回结果中第一个整数值作为下一次遍历的 cursor。一直遍历到返回的 cursor 值为 0 时结束。

注意:但是scan并非完美无瑕, 如果在scan的过程中如果有键的变化(增加、 删除、 修改) ,那么遍历效果可能会碰到如下问题: 新增的键可能没有遍历到, 遍历出了重复的键等情况, 也就是说scan并不能保证完整的遍历出来所有的键, 这些是我们在开发时需要考虑的。

0

0

Info:查看redis服务运行信息,分为 9 大块,每个块都有非常多的参数,这 9 个块分别是:

Server 服务器运行的环境参数

Clients 客户端相关信息

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

Persistence 持久化信息

Stats 通用统计数据

Replication 主从复制相关信息

CPU CPU 使用情况

Cluster 集群信息

KeySpace 键值对统计数量信息

0

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时的淘汰策略

相关文章:

Redis-高性能原理剖析

redis安装 下载地址:http://redis.io/download 安装步骤: # 安装gcc yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar -zxvf redis-5.0.3.tar…...

ORA-00600 【3948】,ORA-00600 【3949】

前言 这个报错没有从ORA600那个tool中查到。 回顾 环境 环境是windows 11203 rac环境,非归档数据库 有部分数据文件建到了本地文件系统。目标是将部分数据文件通过switch to copy的形式移动到diskgroup里 流程 srvctl关闭双节点, 启动单节点到moun…...

flink 查看写入starrocks的数据量 总行数

针对该connector: https://github.com/StarRocks/docs.zh-cn/blob/main/loading/Flink-connector-starrocks.md...

全链路压测的步骤及重要性

全链路压测是一种系统性的性能测试方法,旨在模拟真实用户场景下的完整操作流程,全面评估软件系统在不同压力下的性能表现。这种测试方法对于保证应用程序的高可用性、稳定性和可扩展性至关重要。 1. 全链路压测概述 全链路压测是在模拟实际用户使用场景的…...

使用Python实现几种底层技术的数据结构

使用Python实现几种底层技术的数据结构 数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这…...

前端面试题【72道】

文章目录 1. 说说你对盒子模型的理解2. css选择器有哪些?优先级?哪些属性可以继承?3. 元素水平垂直居中的方法有哪些?如果元素不定宽高呢?4. 怎么理解回流跟重绘?什么场景下会触发?5. 什么是响应…...

OpenGL 绘制文本(QPainter)

文章目录 一、简介二、实现代码三、实现效果一、简介 OpenGL中并没有绘制文本的相关函数,因此这里仍然用的是Qt中的QPainter工具来绘制文本,但是其相关的定位这里仍然会用OpenGL中的坐标转换。这里对其也进行封装一下,方便后续使用。 二、实现代码 TextDrawable.h #ifndef T…...

windows电脑连接Android和iPhone真机调试

windows电脑连接Android和iPhone真机调试 目前用的是Hbuilder X编辑器,在正常情况下,Android手机需要在 "设置 ----> 更多设置 ----->关于手机 ------> 版本号(手指点击5-7下即可打开开发者模式)"(我的是vivo的…...

windows上 adb devices有设备 wsl上没有

终于解决了!!!! TAT,尝试了很多种办法。 比如WSL中的adb和Windows中的adb版本必须一致,一致也没用,比如使用 ln 建立链接也没用。 这个解决办法的前提是windows中的abd是好用的。 ●在windows…...

释放搜索潜力:基于Docker快速搭建ES语义检索系统(快速版),让信息尽在掌握

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…...

JS--localStorage设置过期时间的方案(有示例)

原文网址:JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何使用localStorage设置数据的过期时间。 问题描述 localStorage是不支持设置过期时间的,cookie虽然支持设置过期时间但它存的数据量很小。所…...

JNPF开发平台凭什么火?

一、关于低代码 JNPF平台在提供无代码(可视化建模)和低代码(高度可扩展的集成工具以支持跨功能团队协同工作)开发工具上是独一无二的。支持简单、快速地构建及不断改进Web端应用程序,可为整个应用程序的生命周期提供全…...

关于“计算机中由于找不到msvcr120.dll,无法继续执行代码5种解决方法

今天,我想和大家分享一下关于“由于找不到msvcr120.dll,无法继续执行代码5种解决方法”的话题。在我们日常的使用中,有时候会遇到这样的问题:在运行某个程序时,突然提示“无法继续执行代码,因为找不到msvcr120.dll”。…...

LR学习笔记——基本面板

文章目录 面板介绍色彩调整区域明暗调整区域纹理及质感色彩饱和 面板介绍 面板如上图所示 基本可分为几个板块:色彩、明暗、纹理及质感、色彩饱和 色彩调整区域 色温:由蓝色和黄色控制色调:由绿色和洋红控制 互补色:蓝色对黄色&…...

Cloud 微服务

架构 一 单体架构 1 概念 将项⽬所有模块(功能)打成jar或者war,然后部署⼀个进程。 互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可以减少开发、…...

若依前后端分离版,快速上手

哈喽~大家好,这篇来看看若依前后端分离版,快速上手(肝了挺久的)。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏:【Springboot和Vue全栈开发】…...

Java-抽象类、抽象方法

【1】抽象类和抽象方法的关系: 抽象类中可以定义0-n个抽象方法。 【2】抽象类作用: 在抽象类中定义抽象方法,目的是为了为子类提供一个通用的模板,子类可以在模板的基础上进行开发,先重写父类的抽象方法&#xff0c…...

南京--ChatGPT/GPT4 科研实践应用

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…...

【VRTK】【VR开发】【Unity】7-配置交互能力和向量追踪

【前情提要】 目前为止,我们虽然设定了手模型和动画,还能够正确根据输入触发动作,不过还未能与任何物体互动。要互动,需要给手部设定相应的Interactor能力。 【配置Interactor的抓取功能】 在Hierarchy中选中[VRTK_CAMERA_RIGS_SETUP] ➤ Camera Rigs, Tracked Alias ➤ …...

【JS】Chapter14-深入面向对象

站在巨人的肩膀上 黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 (十四)深入面向对象 1. 编程思想 1.1 面向过程介绍 面向过程就是分析出解决问题所需要的步骤&#xff0c…...

在 Taotoken 控制台回顾与分析团队月度大模型用量消耗

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在 Taotoken 控制台回顾与分析团队月度大模型用量消耗 对于项目管理者或团队负责人而言,清晰、透明地掌握大模型 API 的…...

基于云端OpenClaw的情绪互动机器人系统-Milk-V Duo S + 机器人 端开发(5)

上周我打通了Milk-V Duo S和机器人的串口控制的脉络,同时制作了两个动作组:下蹲、自由飞翔。 阶段状态环境搭建✅ 完成网络配置✅ 完成串口控制✅ 完成动作调度✅ 完成序列执行控制✅ 完成时间控制✅ 完成部分动作组制作✅ 完成线程执行锁✅ 完成云端接…...

免费去图片水印App排行榜:2026实测推荐,一键去除水印哪款好用?

图片被水印挡住,想用却下不了手——这个问题相信不少人都遇到过。不管是从小红书、抖音保存下来的素材图,还是电商产品图、自媒体封面,只要带了平台水印或版权标识,用起来就很别扭。 市面上声称免费的去水印工具多如牛毛&#xff…...

2025届必备的十大降AI率网站实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下的学术写作范畴之内,专门用于专业论文创作的 AI 网站,已然变成…...

MAX2140 SDARS接收器架构与射频前端设计解析

1. MAX2140 SDARS接收器核心架构解析卫星数字音频广播服务(SDARS)接收器的设计需要同时应对卫星直射信号和地面中继信号的复杂接收环境。MAX2140作为高度集成的解决方案,其架构设计充分考虑了卫星广播的特殊性。接收链路从天线输入开始,信号首先经过外部…...

避坑指南:Ansys Icepak仿真结果异常(高温、不收敛、数据丢失)的5个常见原因与排查方法

Ansys Icepak热仿真异常排查实战:从物理原理到软件操作的深度解析 引言:当仿真结果偏离物理常识时 第一次看到Icepak仿真结果中出现3000℃的芯片温度时,我盯着屏幕愣了三分钟——这显然违背了基本的物理规律。这种"超现实"的仿真结…...

AI Agent容器化:声明式环境即代码的实践与工具

1. 项目概述:一个面向AI Agent的容器化基础设施生成器如果你和我一样,在尝试将不同的AI Agent(比如Claude Code、GitHub Copilot CLI、OpenClaw)集成到开发工作流中时,被各种运行时依赖、环境配置和权限问题搞得焦头烂…...

北斗开发者必看:用C#搞定BDS周内秒与UTC/日历时间的互转(附完整代码)

北斗开发者必看:用C#搞定BDS周内秒与UTC/日历时间的互转(附完整代码) 在北斗卫星导航系统的开发过程中,时间处理是一个基础但极其关键的环节。北斗系统采用独特的"周-周内秒"时间表示法,这与我们日常使用的日…...

tinfoleak地理情报分析:追踪用户位置与移动路线的终极指南

tinfoleak地理情报分析:追踪用户位置与移动路线的终极指南 【免费下载链接】tinfoleak The most complete open-source tool for Twitter intelligence analysis 项目地址: https://gitcode.com/gh_mirrors/ti/tinfoleak tinfoleak是一款功能强大的开源Twitt…...

LayerZero验证库工作原理:MPTValidator与FPValidator技术实现

LayerZero验证库工作原理:MPTValidator与FPValidator技术实现 【免费下载链接】LayerZero An Omnichain Interoperability Protocol 项目地址: https://gitcode.com/gh_mirrors/la/LayerZero LayerZero作为Omnichain Interoperability Protocol(全…...