Redis,单线程,高速缓存系统!!!(个人总结)

中间件Redis简介 Redis概述 什么是redis Redis是一种支持key-value等多种数据结构的高速缓存数据库,用C语言编写 可以用于缓存、事件发布和订阅,高速队列等场景 提供字符串,哈希,列表,队列,集合直接存存取, 基于内存,可以持久化 为什么要使用redis 读写速度非常快 读的速度是每秒11万次,写的速度每秒8万次 支持多种数据类型 支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作 原子性 redis的所有操作都是原子 阅读详情

Redis,单线程,高速缓存系统!!!(个人总结)

Redis相关知识

曾经面试中面试官问到过Redis相关的东西,由于当时是开发小白,对此了解的相对比较片面,后面的工作中,项目里用到Redis这一款集缓存和数据持久化的nosql数据库系统,现在对这项技术进行简单的总结,希望可以对自己有所提升,为广大开发者提供相关的帮助,本篇文章是本人凭个人记忆进行总结,如和其他开发者有雷同或者重叠的部分,请多多指教,文章如果有不到位的地方,还请各位大佬提出合理意见或建议!

什么是Redis?

Redis是一款高速,单线程,集缓存和数据持久化的nosql数据库,目前在数据库流行排行榜排名第八的一款缓存系统,从流行度上面我们可以看出Redis在市面上的受欢迎程度。Redis是由c语言编写的,所以,Redis的编译过程离不开gcc编译器。同时,Redis可支持事务,日志等功能。

Redis支持的数据类型

Redis支持五种数据类型:
1、String(字符串):string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
2、hash(哈希):Redis hash 是一个键值(key=>value)对集合。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
3、List(列表):Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
4、Set(集合):Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
5、Sorted Set(zset,有序集合):Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念。

Redis是单线程,为什么速度还那么快?

众所周知,Redis是单线程,但是执行速度却非常快,主要因为以下三方面的因素:
1、Redis大多数操作都是运行在内存上进行,完全基于内存,速度非常快。
2、Redis是单线程,可以有效的避免不必要的上下文切换和资源竞争关系。
3、Redis采用的是非阻塞IO,IO多路复用方式(epoll-IO方式)。
说到IO多路复用,不得不说多路复用的三种方式:select,poll,epoll,其中select,poll是线程不安全的,epoll是线程安全的。redis内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间 这3个条件不是相互独立的,特别是第一条,如果请求都是耗时的,采用单线程吞吐量及性能可想而知了。应该说redis为特殊的场景选择了合适的技术方案。
转自:https://blog.youkuaiyun.com/lch_2016/article/details/81078243

Redis的两种持久化方式

Redis有两种持久化方式:AOF和RDB。
RDB方式:

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
AOF方式:
在这里插入图片描述
两张图片可以清晰的展示出两种不同方式的持久化方式。

Redis的过期策略

Redis有6种过期策略:
1、volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰。2、volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰。
3、volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰。
4、allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰。
5、allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰。
6、no-enviction(驱逐):禁止驱逐数据,新写入操作会报错。
开发的过程不只是死记硬背,而是结合实际开发过程中,不断地去理解和感悟,才能更加深刻的
对相关知识进行总结和掌握。

〖Python 数据库开发实战 - Redis篇①〗- 高速缓存技术及Redis简介 接下来的我们将学习新的知识,那就是高速缓存技术的 "Redis数据库"。 阅读详情

相关推荐

Node.js 与 Redis:实现高速缓存的终极方案

核心概念Redis是内存数据结构服务器Node.js擅长高并发IO缓存策略需要平衡速度与一致性关系本质如同快递员与智能仓库的协作:Node.js负责请求调度,Redis承担高速存取,共同构建性能护城河。

小白菜的博客 1038

缓存之redis----每秒可以处理超过 10万次读写操作!!!

1.什么是Redis Redis:是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。 2.Redis 可以怎么用 (1)存储键和五种不同类型的值之间的映射 (2)键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合 (3)与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,是已知性能最快的Key-Value DB。 (3)redis有怎么其他用途 Redis 也经常用来做分布式锁,支持事务 、持...

m0_43609780的博客 1万+

Dify 部署与使用

本文介绍了Dify社区版的快速部署指南,涵盖系统架构、环境配置和初始化流程。Dify采用微服务架构,通过Docker Compose一键部署8个核心容器,包括前端、后端、数据库等组件。部署过程包括克隆代码、配置环境变量和启动服务,首次启动需3-10分钟下载镜像。文章详细讲解了.env文件的配置要点,包括服务地址、数据库连接和向量存储设置,并提供了生产环境安全加固建议。最后通过访问/install页面完成管理员账号初始化,即可开始使用Dify构建AI应用。

海兰 591

Redis为什么这么快?

Redis为什么这么快?内存存储、数据结构、非阻塞I/O、线程模型。

qq_44591181的博客 1231

从零到一:RF-DETR如何通过神经架构搜索重塑实时目标检测的边界

RF-DETR通过创新的权重共享神经架构搜索(NAS)机制,重新定义了实时目标检测的技术边界。这项技术在COCO等基准测试中表现卓越,成为首个AP超过60的实时检测器,同时保持跨领域稳定性和高效推理速度。RF-DETR的动态架构调整能力使其能够适应从嵌入式设备到云端服务器的各种硬件环境,为工业质检、自动驾驶等场景提供灵活解决方案。

weixin_29061531的博客 469

使用KITTI数据集测试不同算法的性能

该文章将使用同一个kitti数据集来测试不同算法的性能,目前已经测试的算法包括:LIO-SAM,FAST-LIO2,Point-LIO,Faster-LIO。

wwtx的博客 2586

Redis 的速度有多快?

Redis 是一个运行在内存中的高性能 key-value 数据库,官方给出的测试报告是单机可以支持 10 万左右 QPS(Queries Per Second)。😱。

qq_28791753的博客 1129

学习Ultralytics (下载)

Ultralytics由创立,最初是为了简化目标检测模型的开发和应用,专注于构建高效、易用、性能卓越的深度学习框架。其主要产品之一是 YOLO 系列模型,尤其是最新的YOLOv5和YOLOv8,因其在精度、速度和可扩展性方面的出色表现而广受欢迎。

2301_76846375的博客 2864

Redis的使用

1. 什么是redis。 Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。 Redis是一个开源的使用ANSI C语言编写可基于内存亦可基于磁盘,Key-Value数据库。类似于map 2. 为

qq_29864549的博客 314

【万字长文】学习Armv8架构虚拟化一篇就够了

这里我们将介绍一些基础的Hypervisor和虚拟化的理论知识。如果你已经有一定的基础或是已经熟悉了这些概念,可以跳过这部分内容。我们用Hypervisor这个词来定义一种负责创建,管理以及调度虚拟机(Virtual Machines, VMs)的软件。Stage 2 转换允许Hypervisor控制虚拟机的内存视图。具体来说,其可以控制虚拟机是否可以访问特定的某一块物理内存,以及该内存块出现在虚拟机内存空间的位置。这种能力对于虚拟机的隔离和沙箱功能来说至关重要。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5313

零基础使用Manim画傅里叶变换

0x01 准备工作 确保你的电脑中安装的有:Python(3.6以上版本,推荐3.8)、FFmpeg(在PATH环境变量中)、LaTex发行版,如果这些都有了,就可以跳过这步。 下面是安装指南: Python:Win10用户直接在微软商店搜索Python3.8安装,也可以自行百度安装方法,在开始菜单右键打开PowerShell,或者Win+R输入PowerShell打开,输入Pyhton --version,显示3.8以上。 FFmpeg:可以直接百度下载,或者用我打包好的(下载链接)。下载好后,将ff

TagBug的博客 3191

Redis为什么会这么快?Redis到底有多快?

epoll:linux 还提供了 epoll 的系统调用,epoll 是基于事件驱动方式来代替顺序扫描,因此性能相对来说更高,主要原理是,当被监听的 fd 中,有 fd 就绪时,会告知当前进程具体哪一个 fd 就绪,那么当前进程只需要去从指定的 fd 上读取数据即可。从硬件设备复制数据到内核缓冲区是阻塞的,从内核缓冲区拷贝到用户空间,也是阻塞的,直到copy complete,内核返回结果,用户进程才解除block的状态。多路复用有很多的实现,以select为例,当用户进程调用了多路复用器,进程会被阻塞。

秃了也弱了 1260

有趣的方式学习DDR5(4)—— DDR5 SDRAM 启动与初始化过程全攻略

🟢。

weixin_43199439的博客 1623

Redis:Redis背景、特性、客户端及单线程模型

1.通过网络建立联系——>所以redis的客户端和服务器可以在一个主机上,也可以在不同主机上2.一个redis服务器可能服务多个redis客户端——>所以redis服务端是数据存储和管理的主体。

weixin_51142926的博客 1638

ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望

ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的

VehSwHwDeveloper的博客 558

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【Redis】为什么Redis单线程还这么快?通过什么机制进行优化的?

总共有这几个大的方向,保证了单线程的环境下的处理性能:内存、数据结构、非阻塞I/O、多路复用,非CPU密集型、单线程的优势、多线程以及后台线程的处理优化。

A的博客 1261

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Redis 为什么设计为“单线程”?

Redis 的 "单线程" 特性实际上特指其核心的命令执行模块,即对数据结构的直接操作(如 GET、SET、HSET 等命令)是由单个主线程顺序执行的。这种设计保证了数据操作的原子性和简单性,避免了复杂的线程同步问题。单线程模型下,所有命令按顺序执行。如果某个命令的执行时间过长(如 KEYS、HGETALL 等遍历大量数据的命令),会阻塞后续所有命令的执行,导致 Redis 响应延迟甚至 "假死"。Redis 的核心优势是 "基于内存的键值存储",而内存操作的速度远快于 CPU 切换开销。

Toroto5的博客 1449

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

redis作为高速缓存

Redis适合哪些业务场景 常规业务系统的数据库访问中,读写操作的比例一般在7/3到9/1,也就是说读操作远多于写操作,因此高并发系统设计里,通过NoSQL技术将热点数据(短期内变动概率小的数据)放入内存以达到减轻DB压力,提升数据访问速度的目的,Redis和MongoDB是当下应用最广泛的NoSQL产品,当然如果系统里的写操作居多,也没有必要使用缓存,因此Redis主要用于解决访问性能和并发能力...

Jokerfsc的博客 428

Redis快是因为使用了单线程?

最近在看八股文的时候,经常看到Redis快的原因之一是使用了单线程避免了线程切换和数据同步的开销,那么真的是这样吗?

botao234的博客 950

浅谈Redis为什么能实现高速缓存

redis是什么 官网给出的解释:Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供高可用性 ...

schcilin的博客 988

五大点,搞懂单线程的Redis到底快在哪里

目录 前言 一.开发语言 二.纯内存访问 三.数据结构简单 四.单线程 五.非阻塞多路I/O复用机制 前言 Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数据结构和算法组成。Redis还提供了键过期,发布订阅,事务,Lua脚本,哨兵,Cluster等功能。Redis执行命令的速度非常快,根据官方给的性能可以达到10w+qps。那么本文主要介绍到底Redis快

LoveSummer 870

面试题:单线程的Redis为啥那么快?

点击蓝色“小哈学Java”关注我哟加个“星标”,第一时间获取小哈推送的文章哦!来源:http://985.so/aCCZ前言  Redis是一种基于键值对(Key-Val...

犬小哈 750

redis 1.NOSQL、CAP理论、redis单节点安装启动、redis密码设置、redis单线程+多路IO复用技术

一.NoSql 1.出现背景 1.1单机Mysql数据的瓶颈 1.数据量的总大小 一个机器放不下时 2.数据的索引(B+ Tree)一个机器的内存放不下时 3.访问量(读写混合)一个实例不能承受 1.2Memcached+mysql+垂直拆分 1.3mysql主从读写分离 1.4分表分库 水平拆分 mysql集群 1.5 mysql瓶颈 MySQL数据库经常存储一些大文本字段,导致数据库表非...

不是一枚开发 5万+

redis(一)—— 入门、单线程

于是我们准备3个mysql服务器,他们3个的内容是同步的。1号和3号负责用户的读操作(因为80%的用户请求都是读),而2号负责写操作,并把更改的结果同步到1和3(所以,缓存的作用就出现了!redis是nosql的一种,为什么需要用redis,redis在真实项目中的使用场景。之前数据量小的时候,我们用一个mysql就可以满足用户存储数据、增删改查的要求。时代,mysql的优势在于海量数据的存储,但是海量数据的增删改查就显得力不从心。(2)所有用户的读、写都访问这台mysql服务器,访问量太大了!

qq_44886213的博客 223

二、Redis概述安装

Redis是一个高性能的开源键值存储系统,支持多种数据类型和原子操作。它通过单线程模型结合多路IO复用技术实现高并发处理。Redis 6.0引入了多线程来提高网络数据的读写性能,同时保持了单线程的简单性和高效性。

weixin_44063529的博客 1039
JavaerMrQiu
博客等级 码龄7年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值