论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
第54篇 Redis简朴介绍
第54篇 Redis简朴介绍
我可以不吃啊
金牌会员
|
2024-11-24 14:30:44
|
显示全部楼层
|
阅读模式
楼主
主题
906
|
帖子
906
|
积分
2718
前言
Redis,作为一种
开源的、基于内存且支持持久化的键值存储系统
,以其卓越的性能、丰富灵活的数据结构和高度可扩展性在全球范围内广受欢迎。Redis不但提供了一种简朴直观的方式来存储和检索数据,更因其支持数据结构如
字符串、哈希、列表、集合、有序集合
等多种类型,使得其在众多场景下表现出强大的实用性和灵活性。
作为一个轻量级、灵活的键值存储系统,Redis在各种应用场景下都展现出了惊人的性能优势。无论是作为
缓存工具
、
会话管理组件
、
消息通报媒介
,还是在
实时数据处理使命和复杂的分布式系统
架构中,Redis均扮演了至关告急的脚色。
1.Redis的核心特点
1.1 高性能
基于内存操作,读写速度极快,特别实用于对性能要求高的实时应用。
1.2 数据持久化
支持RDB和AOF两种持久化方式,确保纵然在服务器重启后也能规复数据。
1.3 分布式的特性
通过主从复制、哨兵模式或集群模式,Redis可以轻松地构建高可用和可扩展的服务。
1.4 丰富的数据结构
提供了多种数据结构支持,便于开发人员根据现实需求举行数据建模和处理。
Redis的广泛应用超过了多个行业和技术领域,诸如网站加速、缓存服务、会话管理、实时统计、排行榜、消息队列、分布式锁、外交网络功能、限流控制等。
2 Redis为什么处理快
我们将从Redis基于
内存操作
的特性、
高效的内存数据结构
、
单线程模子
、
I/O多路复用技术
、
底层模子和优化技术
、
持久化机制
以及
网络通讯协议
等多个方面举行分析和讨论。
2.1 完全基于内存
相较于依赖磁盘存储的传统数据库系统,Redis巧妙地运用内存的高速读写特性,显著提升了系统的响应速率与整体性能表现。
在读取操作层面,Redis无需经过耗时的磁盘I/O过程,只需在内存空间内敏捷定位所需数据,从而显著降低了访问延迟;
在写入操作时,Redis同样直接作用于内存区域,新数据能即刻见效,仅在执行持久化战略时,例如RDB快照或AOF日志记录,数据才会被异步地或按需地同步至磁盘,以确保纵然在系统重启后数据仍能得以规复,但此过程并不会妨碍Redis在常规操作中维持其卓越的性能表现。
说到这,我们就会想到,一台服务器的内存不是无穷的,相反的是比较告急的,Redis基于内存操作,那么Redis究竟是如何在有限内存空间中举行精细且高效的内存管理呢?
2.1.1 过期键删除
Redis支持为键设置过期时间(TTL),并且在键过期后会通过两种方式自动删除它们:
惰性删除(Lazy Expire):在访问某个键时,Redis会检查该键是否已经过期,如果已经过期,则在访问时将其删除。这意味着只有当有客户端尝试访问过期的键时,Redis才会执行删除操作。这种方式的优势在于避免了不必要的操作,只有在需要时才举行删除,但缺点是可能会导致过期键在一段时间内仍然占用内存。
定期删除(Active Expire):Redis周期性地(默认每秒10次)随机抽取一部分键,并检查它们的过期时间。如果发现某个键已经过期,则立即将其删除。这种方式可以保证过期键在一定时间内被及时删除,避免了过期键长时间占用内存。但定期删除会带来额外的CPU消耗,因为需要在每次抽取时检查键的过期时间。
这两种方式结合起来,可以有效地管理和清算过期键,保证Redis的内存使用在合理范围内。同时,我们在日常开发中可以根据具体业务场景和需求调整过期战略的设置,以达到最佳的性能和内存利用率。
2.1.2 内存淘汰战略
内存淘汰战略是Redis用于释放内存空间的一种机制,当内存空间不足时(达到或超过了设置的maxmemory),Redis会根据预先设置的淘汰战略来选择要删除的键,从而释放内存空间。通过合理选择和设置内存淘汰战略,可以有效地管理内存使用,防止内存溢出,并保证系统的稳定性和性能。
常见的内存淘汰战略:
LRU(最近最少使用)
:
LRU战略会删除最近最少被访问的键。Redis会记录每个键最后一次被访问的时间戳,并定期检查这些时间戳,选择最久未被访问的键举行删除。LRU战略实用于缓存场景,通常最久未被访问的键可能是最不常用的,因此删除这些键可以释放更多的内存空间。
LFU(最不经常使用):
LFU战略会删除最不经常被访问的键。Redis会记录每个键被访问的频率,并定期检查这些频率,选择访问频率最低的键举行删除。LFU战略实用于对访问频率较低的键举行淘汰,从而释放内存空间。
TTL(键的过期时间):
TTL战略会删除已经过期的键。Redis会定期检查键的过期时间,并删除已经过期的键。通过设置键的过期时间,可以自动清算不再需要的数据,释放内存空间。
随机删除:
随机删除战略会随机选择一些键举行删除。固然这种战略不考虑键的使用频率或过期时间,但在某些情况下可能会是一种简朴且有效的淘汰方式,尤其是在内存空间不足时。
淘汰固定命量的键
淘汰固定命量的键战略会选择要删除的键的数量,然后按照一定的规则(如LRU或LFU)来选择要删除的键。这种战略可以保证每次淘汰都释放固定命量的内存空间。
当Redis的内存使用达到设置的maxmemory限制时,就会触发内存淘汰战略,以释放内存空间。合理选择内存淘汰战略,并根据系统的需求设置maxmemory参数,可以有效地管理内存使用,保证系统的稳定性和性能。通过合理设置内存限制和内存淘汰战略,可以有效地管理Redis的内存使用,保证系统在内存空间不足时能够及时释放内存,避免因内存溢出而导致系统性能降落大概崩溃。
本随笔借鉴或转载自:
https://www.coderacademy.online/article/redisused.html
https://www.coderacademy.online/article/redishighperformance.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
我可以不吃啊
金牌会员
这个人很懒什么都没写!
楼主热帖
如何编写一个高效的Testbench? ...
微信小程序
HeadPose Estimation头部姿态估计头部 ...
Linux 之 shell 编程
【笔者感悟】笔者的学习心得【七】 ...
接口测试测什么?这篇文章告诉你 ...
CVE-2015-5254漏洞复现
Typora+PicGo+阿里云OSS搭建博客图床( ...
轻松掌握组件启动之MongoDB(番外篇) ...
Python 将 docx 转为 PDF
标签云
挺好的
服务器
快速回复
返回顶部
返回列表