标签: 数据库

11 篇文章

Redis 的内存用完了会发生什么?
当Redis内存用完后,会发生以下几种情况: 一、写入操作失败 Redis达到最大内存限制后,默认行为是拒绝新的写入操作并返回错误。此时SET、HSET等写命令会报错"OOM command not allowed when used memory > 'maxmemory'",但读操作和删除操作仍可正常执行。这是为了保护数据一致性,防止数据…
一个Redis 实例最多能存放多少的 keys? List、Set、Sorted Set 他们最多能存放多少元素?
Redis 实例的 Key 数量限制 Redis 实例理论上最多可以存储 2^32 - 1 个 keys,即约 42.9 亿个 keys。这个限制来源于 Redis 内部哈希表实现使用的 32 位无符号整数索引机制。 不过在实际生产环境中,单机 Redis 实例经过测试可以稳定处理的 Key 数量约为 2.5 亿个。实际可存储的 Key 数量主要受…
redis中如果有大量的 key 需要设置同一时间过期,一般需要注意什么?
当需要为大量key设置同一时间过期时,需要注意以下几个关键问题: 1. 避免集中过期引发的性能问题 如果大量key在同一时刻过期,会导致Redis在短时间内处理大量删除操作,可能产生以下影响: CPU负载激增:Redis的定期删除策略会频繁触发,增加CPU消耗 请求延迟增加:删除操作可能阻塞主线程,影响其他请求的响应速度 缓存雪崩风险:如果这些ke…
告别慢查询!Spring Boot整合Redis打造高性能缓存,这篇真的够了​
一、前言 在当今的互联网应用开发中,业务性能优化是至关重要的一环。随着用户数量的增加和业务复杂度的提升,数据库的压力也越来越大,响应时间变长,用户体验随之下降。而缓存技术的出现,为解决这些问题提供了有效的途径。其中,Redis凭借其高性能、多数据结构的特性,成为缓存、分布式锁、限流等场景的首选中间件。Spring Boot作为主流的Java开发框架…
SpringBoot多数据源配置与动态切换技术详解
一、多数据源应用场景 在实际开发中,SpringBoot应用连接多个数据库的需求日益普遍,主要应用于以下场景: 读写分离架构:主库负责写入,从库负责查询,QPS可提升3-5倍 业务分库:订单库、用户库分离,降低单库压力 多租户系统:每个租户独立数据库,实现数据隔离 异构数据库:MySQL + MongoDB混合使用,满足不同业务需求 二、核心实现方…
MySQL 乐观锁与悲观锁怎么实现?
在数据库并发控制中,乐观锁和悲观锁是两种核心的并发控制策略,它们分别适用于不同的业务场景。本文将详细介绍这两种锁机制在MySQL中的实现方式、适用场景以及实际应用案例。 一、悲观锁:先加锁再操作 1. 核心思想 悲观锁认为并发冲突随时可能发生,因此在访问数据前先对数据加锁,阻止其他事务修改数据,直到当前事务完成操作后才释放锁。 2. 实现方式 在M…
什么是数据库范式,为什么要反范式化设计?
一、什么是数据库范式? 数据库范式(Normal Form)是关系型数据库设计中的一系列规范化规则,旨在通过分解表结构、消除数据冗余,确保数据的一致性和完整性。范式理论将数据库设计分为多个等级,从第一范式到第五范式,每个等级都有更严格的规范要求。 1.1 第一范式(1NF) 第一范式是最基础的范式要求,核心规则是字段原子性——每个字段必须是不可再分…
为什么互联网大厂不推荐使用多表 join?
互联网大厂不推荐使用多表JOIN,主要基于性能瓶颈、可扩展性差、与微服务架构冲突三大核心原因。在高并发、海量数据的互联网场景下,JOIN操作会产生大量中间结果集,消耗大量CPU和内存资源,容易成为慢查询拖垮数据库。在分库分表架构下,跨物理节点的JOIN查询变得异常复杂甚至无法执行,同时强依赖其他服务的数据库表进行JOIN也违反了微服务边界的封装性。…
Redis如何保证缓存与数据库的数据一致性?
Redis缓存与数据库的数据一致性是分布式系统中的一个经典挑战。没有完美的通用方案,只有针对特定场景的权衡选择。以下是主要的策略、场景分析和实践建议: 一、核心策略模式 1. Cache-Aside(旁路缓存) 最常见的模式,由应用层控制缓存: // 读流程 1. 读缓存,命中则返回 2. 未命中则读数据库 3. 写入缓存后返回 // 写流程 1.…