Redis技术总结

Redis技术深度解析 Redis是一款开源的高性能键值存储系统,以其内存存储、丰富的数据结构、持久化与容灾、分布式锁等核心特性,广泛应用于现代互联网架构中。文章详细解析了Redis的内存存储与高性能、多种数据类型、持久化机制、分布式锁等特性,并通过与Memcached、PostgreSQL、Elasticsearch的对比,展示了Redis在不同场景下的优势。此外,文章还探讨了Redis的实际应用场景,如缓存加速、会话存储、消息队列、限流与计数,以及其进阶特性如集群模式、Lua脚本、模块化扩展。 阅读详情

1.基本数据结构,底层原理,以及应用

String

底层使用了SDS简单动态字符,string一共三种编码方式,int,embstr,raw

int主要存储long型整数

string有两个数据结构redisObject和SDS

embstr和raw底层sds,主要区别是embstr的redisobject和sds连续存储在一起,而redisobject和sds通过指针相连,不连续。

当int型时,大于19用embstr,大于44用raw

浮点数,字符串默认embstr,大于44用raw

主要用途是存储用户信息,token,分布式锁,计数器等

List

底层使用了压缩链表和双向链表

压缩链表,包括zlbytes总字节数,zltail从首节点到尾节点一共多少字节,zllen节点数量,entries节点,zlend结束符,连续

他是一种紧凑型的数据结构,节省资源

双向链表,无环,包含两部分,一个list,一个listnode数据结构,listnode是双向链表,list通过指针链接到listnode的头尾节点。不连续

当存储每个节点小于64时,或总长度小于128时,用压缩链表

主要用途是消息队列

Set

底层使用了intset和哈希表

inset有三部分,编码,长度,数据,编码有三种,int16,int32,int64,分别是2,4,8字节

哈希表是两层的key -value

当集合中int数组数量大于512,或只要有其他类型都会使用哈希表

主要用途是共同粉丝,共同好友

ZSet

底层使用了压缩链表和跳表

压缩链表,紧凑型数据结构,连续存储

跳表是在链表基础上改进的。比当前节点大,比下一个小,则往下找。

当存储每个节点小于64,总长度小于128,用压缩链表

主要用途排行榜

Hash

底层哈希表或压缩链表

压缩链表,zlbyte总字节数,zltail首尾字节数,偏移量,zllen长度,zlend结束符,entry节点

哈希表,两层key-value

主要用途,存储对象

2.redis内存淘汰策略

一共有六种

淘汰最久未使用的

淘汰最近未使用的

随机淘汰

在过期的键值对中,再加上面三种情况

3.redis过期删除策略

定时删除 - 过期了就删除

定期删除 - 一段时间清理一次

惰性删除 - 过期了先不删除,等下次查询时判断是否过期在删除

4.redis持久化

三种策略

rdb 

快照存储,读取恢复数据快,每次采取覆盖方式写数据。

流程,先去判断父线程有没有子线程,如果没有,调用fork去创建子线程保存数据。bgsave

会丢失一次数据

aof

操作信息,采取追加的方式,数据会越来越多,但实时性强

流程先写入aof buffer,根据刷盘策略刷到磁盘,no 系统策略,everysec每秒,always每次操作

混合持久化

第一次先写rdb,后续追加aof

当达到一定条件时重写rdb

数据恢复先读取rdb,在读取aof

5.redis为什么这么快

单线程

内存数据库,无io

io多路复用技术

高效数据结构

6.redis三大问题

缓存穿透 - 大量访问数据库不存在

Redis 技术文档 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,这使得它在应对不同场景的应用开发时极具灵活性,能够显著提升应用的性能和响应速度。 阅读详情

相关推荐

Redis管道技术(Pipeline)详解

Redis管道技术(Pipeline)是一种优化客户端与Redis服务器之间通信的技术,主要用于减少请求-响应之间的网络往返时间,从而提高执行效率。通过Redis管道技术,可以显著提升Redis在批量操作场景下的性能,是一种重要的性能优化手段。

maply的博客 1149

DESeq2实战:如何用LRT检验分析基因表达随时间变化的模式(附完整代码)

本文详细介绍了如何使用DESeq2中的LRT检验分析基因表达随时间变化的模式,包括实验设计、数据预处理、模型构建、结果提取与可视化等完整流程。通过实战案例和完整代码,帮助生物信息学研究者掌握时间序列RNA-seq分析的核心技术,特别适合需要快速上手的实践者。

weixin_42620255的博客 464

DSP TMS320C6657中FFT函数的调用与具体使用方法

首先明确一点,C6678中FFT的函数形式为: N : length of FFT in complex samples ptr_x : pointer to complex data input ptr_w : pointer to complex twiddle factor ptr_y : pointer to complex output data brev : pointer to bit reverse table containing 64 entries n_min : should be

Kayboy的博客 3010

南京邮电大学电工电子基础B实验六(组合逻辑电路)

南京邮电大学电工电子基础B实验五(组合逻辑电路);电工电子;南京邮电大学;计算机学院;实验报告;电路图;

亦是远方的小地方 1万+

概念解析 | 事件相机的原理 (含仿真代码)

在我们熟悉的世界里,传统相机就像一个勤勉的绘画师,每隔固定的时间就为我们勾勒出一幅完整的画面。但是,大自然中有太多瞬息万变的精彩场景,这种"定时绘画"的方式往往难以捕捉。于是,一种全新的"观察者"应运而生 -事件相机(Event Camera)。事件相机,就像是一群极其敏感的"像素哨兵",它们不再按部就班地等待指令,而是主动感知周围的变化,只有在光线强度发生显著变化时才会发出信号。这种革命性的设计,让事件相机拥有了传统相机难以企及的优势:超高的时间分辨率、极低的延迟、宽广的动态范围,以及出色的能效比。

NLOS的博客 1421

OpenCV实例(二)手势识别

手势识别的范围很广泛,在不同场景下,有不同类型的手势需要识别,例如:● 识别手势所表示的数值。● 识别手势在特定游戏中的含义,如“石头、剪刀、布”等。● 识别手势在游戏中表示的动作,如前进、跳跃、后退等。● 识别特定手势的含义,如表示“OK”的手势、表示胜利的手势等。理论基础凸包和凸缺陷在图像处理中具有非常重要的意义,被广泛地用于图像识别等领域。逼近多边形是轮廓的高度近似,但是有时候,我们希望使用一个多边形的凸包来简化它。凸包和逼近多边形很像,只不过凸包是物体最外层的凸多边形。

小幽余生不加糖 9409

uniapp [安卓苹果App端] - errMsg“: “request:fail abort statusCode:-1 不支持的URL(-1002)Uniapp真机运行APP网络请求报错失败排查

uniapp真机运行APP,网络请求报错errMsg“: “request:fail abort statusCode:-1 不支持的URL(-1002),uni.request网路请求报错,uniApp解决请求接口报错,uniapp app端打包上线后请求报错,真机运行测试请求失败,uniapp安卓app请求报错,uniapp苹果ios平台网络请求报错,uniapp真机预览请求失败怎么办,不是跨域问题,在H5中请求可以正常发送和接收,但在真机APP上请求报错,Hbuilder真机运行app网络请求报错,全

🏆 前端领域优质创作者 3086

【Java基础篇】Java重要特性,JDK,JRE,JVM区别和联系,环境变量

JDK使用时的执行流程: • 开发者视角(需要开发java程序):需要安装JDK a. 首先使用JDK调用Tools&Tool APIs(开发者工具)编写好Java程序--xxx.java b. 再次调用Tools&Tool APIs中的javac.exe(编译程序)来编译.java文件(将java文件编译成字节码.class文件) c. 调用java.exe来启动JRE d. 在JRE上运行JAVA字节码(加载特定的.class文件,调用这个class文件中的main方法

Yaoyao2024的博客 2162

〔重庆理工大学〕操作系统实验指导书【实验三 系统调用】

本实验指导书详细介绍了在Linux 0.11系统中添加两个自定义系统调用(iam()和whoami())的完整流程。实验内容包括:修改unistd.h添加系统调用号,更新sys_call_table数组,实现内核函数sys_iam()和sys_whoami(),以及编写测试程序验证功能。关键步骤涉及用户态与内核态数据传递、系统调用号分配、中断处理机制等核心概念。实验要求学习者通过修改内核源码、理解系统调用原理,最终实现名字存储与读取功能,并完成测试验证。实验还提供了视频学习资源和参考书籍,帮助深入理解操作系

Pretty Boy Fox的博客 1286

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

visio安装包

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Redis学习总结(基本数据类型 底层结构)
下一篇: HashMap前世今生
低调$(生活)
博客等级 码龄6年 4689粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低调$(生活)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值