首页 > 数据库 >第54篇 Redis简单介绍

第54篇 Redis简单介绍

时间:2024-11-24 13:23:10浏览次数:9  
标签:策略 删除 过期 54 Redis 内存空间 内存 简单

前言

Redis,作为一种开源的、基于内存且支持持久化的键值存储系统,以其卓越的性能、丰富灵活的数据结构和高度可扩展性在全球范围内广受欢迎。Redis不仅提供了一种简单直观的方式来存储和检索数据,更因其支持数据结构如字符串、哈希、列表、集合、有序集合等多种类型,使得其在众多场景下表现出强大的适用性和灵活性。

作为一个轻量级、灵活的键值存储系统,Redis在各种应用场景下都展现出了惊人的性能优势。无论是作为缓存工具会话管理组件消息传递媒介,还是在实时数据处理任务和复杂的分布式系统架构中,Redis均扮演了至关重要的角色。

1.Redis的核心特点

1.1 高性能

基于内存操作,读写速度极快,特别适用于对性能要求高的实时应用。

1.2 数据持久化

支持RDB和AOF两种持久化方式,确保即使在服务器重启后也能恢复数据。

1.3 分布式的特性

通过主从复制、哨兵模式或集群模式,Redis可以轻松地构建高可用和可扩展的服务。

1.4 丰富的数据结构

提供了多种数据结构支持,便于开发人员根据实际需求进行数据建模和处理。

Redis的广泛应用跨越了多个行业和技术领域,诸如网站加速、缓存服务、会话管理、实时统计、排行榜、消息队列、分布式锁、社交网络功能、限流控制等。

2 Redis为什么处理快

我们将从Redis基于内存操作的特性、高效的内存数据结构单线程模型I/O多路复用技术底层模型和优化技术持久化机制以及网络通信协议等多个方面进行分析和讨论。

image

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

标签:策略,删除,过期,54,Redis,内存空间,内存,简单
From: https://www.cnblogs.com/chenshibao/p/18564683

相关文章

  • 【StringRedisTemplate】SpringBoot项目集成Redis
    目录SpringDataRedis介绍SpringDataRedis的作用SpringDataRedis提供的工具类环境准备引入依赖配置文件StringRedisTemplate的使用StringRedisTemplate的基础APIStringRedisTemplate的常用操作APIRedis的应用场景SpringDataRedis介绍SpringData是Spring......
  • 简单好用!营销活动A/B测试 - 智能短链接
    在如今竞争白热化的市场中,活动营销是否有效直接关乎企业成败。AB测试作为有力工具,能助力企业优化活动营销策略,增强营销成效。AB测试关键在于打造多个活动方案版本,同时推送给不同用户群,对比优劣。其一,先明确测试目标,究竟是提升参与度、促进销售额,还是拔高品牌知名度等。设计......
  • Jedis存储一个以byte[]的形式的对象到Redis
    1.1准备一个User实体类importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importjava.io.Serializable;importjava.util.Date;@Data@NoArgsConstructor@AllArgsConstructorpublicclassUserimplementsSerializable{......
  • MySQL中的ROW_NUMBER窗口函数简单了解下
    ROW_NUMBER()是MySQL8引入的窗口函数之一,它为查询结果集中的每一行分配一个唯一的顺序号(行号)。这个顺序号是基于窗口函数的ORDERBY子句进行排序的,可以根据指定的排序顺序生成连续的整数值。ROW_NUMBER()在分页、去重、分组内排序等场景中非常有用。本文涉及到的脚本测试请......
  • Vue.js基础——贼简单易懂!!(响应式 ref 和 reactive、v-on、v-show 和 v-if、v-for、v-b
     Vue.js是一个渐进式JavaScript框架,用于构建用户界面。它专门设计用于Web应用程序,并专注于视图层。Vue允许开发人员创建可重用的组件,并轻松管理状态和数据绑定。它还提供了一个虚拟DOM系统,用于高效地渲染和重新渲染组件。Vue以其简单易用的特点而闻名,使其成为初学者和有经验的......
  • [Redis 基础知识] Redis Set 类型常用命令
    (1)简介Redis的Set是String类型的无序集合。集合元素是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的元素数为2^32-1(4294967295,每个集合可存储40多亿个元素)。(2)常用命令命令......
  • 大学生个人网页设计 HTML个人网页制作 web个人网站模板 简单静态HTML个人网页作品
    ......
  • Logisim-CRC简单介绍
    简介CRC(CyclicRedundancyCheck)即循环冗余校验是一种既能检错也能纠错的校验码,校验的原理是基于模2运算;编码/解码过程这里以一个示例来进行说明编码过程,假设原始数据为:1101、计算校验位的位数根据公式k+r≤2r-1计算,其中【r】为校验位位数,【k】为原始数据的位数。......
  • 第三章 分布式缓存Redis
    1.Redis持久化1.1RDB持久化RedisDatabaseBackend备份机制,也叫Redis快照。在Redis中,fork用于创建子进程来进行数据持久化操作,这样可以避免阻塞主进程,从而提高性能。1.1.1RDB方式bgsave的基本流程?1.fork主进程得到一个子进程,共享内存空间2.子进程读取内存数据并写入......
  • TWS蓝牙耳机专用单极微功耗霍尔开关SWF254S
    蓝牙耳机作为一种无线通信设备,它通过蓝牙技术实现与音频源或电话的无线连接,使得用户可以无需连接线缆即可听取音频或接听电话。其中,霍尔开关在蓝牙耳机中发挥着重要的作用,为蓝牙耳机注入了智能和便捷的功能。那么霍尔开关在蓝牙耳机中是如何应用的呢?霍尔开关在蓝牙耳机中的......