认识 MongoDB 的数据库与集合
https://docs.mongodb.com/manual/_images/crud-annotated-collection.bakedsvg.svg 数据库(Databases)在 MongoDB 中,数据库是一组集合的逻辑容器,类似于关系型数据库中的“数据库”概念,用于组织和管理相关的数据集合。 创建与切换数据库使用 use 命令可以创建或切换数据库。如果数据库不存在,则会先创建再切换;如果已存在,则直接切换。 javascriptuse my_database;集合(Collections)集合相当于关系型数据库中的“表”,用于存储一组文档。但与传统表不同,MongoDB 的集合是“无模式”的,意味着其中的文档可以拥有不同的结构。 动态创建集合MongoDB 采用“懒创建”机制,在以下两种常见操作时,如果集合不存在,会自动创建它: 向集合插入第一条文档: javascriptdb.myNewCollection1.insertOne( { x: 1 } )为集合创建第一个索引: javascriptdb.myNewCollection2.createIndex( { ...
Redis 八大典型应用场景剖析
此前已介绍过 Redis 及其核心优势,本章将系统性地梳理 Redis 在实际项目中的典型应用场景。掌握这些场景,是确保 Redis 能够成功落地的关键。 高性能缓存缓存已成为中大型网站提升性能的标配技术。合理利用缓存不仅能大幅提升访问速度,还能有效减轻数据库的压力。Redis提供了键过期机制和灵活的淘汰策略,使其成为实现缓存的理想选择。 实时排行榜诸多网站都存在排行榜需求,例如电商平台的月度销量榜、内容平台的热门文章榜等。Redis 的有序集合(SortedSet)数据结构能够高效地支持各种复杂的排行榜计算与展示。 计数器与统计计数场景随处可见,如商品的浏览量、视频的播放次数等。这些场景要求数据实时更新,每次操作都需要递增。在高并发下,频繁请求数据库进行计数操作会带来巨大压力。Redis的 incr 命令是内存操作,性能极高,完美适用于此类计数场景。 分布式会话管理在集群部署环境中,如果应用数量不多,或许可以使用容器自带的 Session 复制功能。但在相对复杂的分布式系统中,通常建议搭建以Redis 等内存数据库为中心的共享 Session 服务。Session 不再...
Redis 官方推荐的 Java 分布式协调框架
什么是 Redisson?Redisson 是 Redis 官方推荐的、用于 Java 的高级分布式协调客户端库。 它基于 Netty 这一高性能 NIO 框架构建,充分利用了 Redis 键值数据库的诸多优势,在 Java标准工具包接口的基础上,提供了一系列具备分布式特性的常用工具类。这使得原本用于协调单机多线程并发的工具,获得了协调分布式多机多线程系统的能力,显著降低了设计和开发大规模分布式系统的复杂度。同时,结合其丰富的分布式服务,进一步简化了分布式环境中各组件间的协作。 Redisson 兼容 Redis 2.6+ 和 JDK 1.6+,采用 Apache License 2.0 授权协议。 官方网站:https://redisson.org/GitHub 仓库:https://github.com/redisson/redisson 主要适用场景分布式应用开发 分布式缓存实现 分布式会话管理 分布式任务/服务/延迟执行服务 作为功能丰富的 Redis 客户端 核心特性概览Redisson 功能强大且全面,主要特性包括: 云服务与集群支持:支持 Ama...
Redis 慢查询日志:原理、配置与分析方法
什么是慢查询日志?与 MySQL 的慢 SQL 日志类似,Redis 也提供了慢查询日志(Slow Log)功能,用于记录执行时间超过预设阈值的命令,帮助开发者定位性能瓶颈。 Redis 的 slowlog 是一个记录查询执行时间的内部系统。这里的“执行时间”特指命令在 Redis 服务器内部实际执行所耗费的时间,不包括网络通信、客户端响应等I/O 开销。 慢查询日志存储在内存中,读写速度极快,因此开启此功能对 Redis 本身的性能影响微乎其微。 核心配置参数慢查询日志的行为主要由以下两个参数控制: slowlog-log-slower-than定义慢查询的时间阈值,单位是微秒(μs),默认值为 10000(即 10 毫秒)。执行时间超过此阈值的命令将被记录。 slowlog-max-len指定慢查询日志列表的最大长度,默认是 128 条。当新记录产生且列表已满时,最旧的记录会被移除以腾出空间。在生产环境中,建议适当调大此值,例如设为1000,以减少日志被覆盖的频率。 可通过以下命令查看当前配置: 127.0.0.1:6379> config get slowlog-...
Spring Boot 集成 Redis Cluster 实战经验分享
添加 Spring Boot 配置在 application.yml 中添加以下 Redis Cluster 配置: yamlspring.redis:database: 0password: 123456timeout: 10000pool:max-active: 8max-idle: 8max-wait: -1min-idle: 0cluster:nodes: 192.168.1.8:9001 192.168.1.8:9002 192.168.1.8:9003注意:配置中只需列出主(Master)节点地址,无需配置从(Slave)节点。Spring Boot 会自动完成其余配置。 配置完成后,即可像使用单节点 Redis 一样操作集群,框架会自动根据 key 进行分片。 遇到的典型问题与解决在集成过程中,可能会遇到如下连接异常: Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool Caused by: java....
Redis 核心操作指令详解,非常详细!
本文系统性地整理和演示了 Redis 在日常使用中的高频命令,涵盖服务管理、键操作、字符串、集合、列表和哈希等多种数据类型。 更全面的 Redis 资源可在后台回复关键词获取。 服务管理相关命令 启动 Redis 服务 > redis-server [--port 6379] 若启动参数较多,推荐通过配置文件启动: > redis-server [配置文件路径] 6379 是 Redis 的标准默认端口。 连接至 Redis 服务 > ./redis-cli [-h 主机地址 -p 端口] 停止 Redis 服务 > redis-cli shutdown > kill Redis进程PID 两种方式效果一致。 发送指令的两种方式带参数直接执行: > redis-cli shutdown 进入交互模式后执行: > ./redis-cli > 127.0.0.1:6379> shutdown 测试连接状态127.0.0.1:6379> ping PONG键(Key)操作命令获取所有键名语法:keys pattern 127.0.0.1:6379...
Spring Data Redis 全面解析与项目实战
Spring Data Redis(简称 SDR)为 Spring 应用程序提供了便捷的 Redis 配置与访问能力。它提供了不同层次的抽象,使开发者能够专注于业务逻辑,而无需过多关注底层基础设施的细节。 Spring Boot 集成实战添加项目依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>${spring-boot.version}</version> </dependency> 配置 Redis 缓存与模板 @EnableCaching @Configuration public class RedisConfig extends CachingConfigurerSupport { @Bean public KeyGenerator keyGenerator() { ...
一个 Redis 高危指令引发的巨额损失事件
近期技术安全事故频发,今日又见报道:某公司 PHP 工程师因在线执行 Redis 危险指令,导致企业直接经济损失高达 400 万元。 究竟是什么 Redis 指令具备如此破坏力,能造成如此重大的损失? 事件简要情况如下: 据媒体报道,某公司技术部门连续发生两起本年度重大事故,累计造成公司资金损失 400 万元,事故原因如下: 由于 PHP 工程师直接在生产环境操作 Redis,执行了 keys * wxdb(此处省略)cf8* 这类指令,导致 Redis 服务被锁死,CPU使用率急剧飙升,进而使得所有支付链路卡顿阻塞。十几秒后,当服务恢复时,积压的请求流量瞬间涌向关系型数据库,引发数据库雪崩效应,最终导致数据库宕机。 该公司已严肃声明,若再发生类似事故,将直接予以开除,并表示后续将逐步回收运维部门的各项操作权限。 看完这则消息,笔者深感震惊:为何如此基础的安全问题仍在发生?为何生产环境中的高危指令未被有效禁用?这类事件被公开报道,确实显得十分低级。 不论涉事公司规模大小,发生此类事故都极不应该,相关责任人员理应引咎反省! 稍有 Redis 使用经验的人员都清楚,在生产环境中绝对不...
从零构建 Redis Cluster 官方集群:详尽步骤与问题解决
本文将完整演示如何从零开始搭建 Redis Cluster 官方集群,记录搭建过程中的关键步骤与常见问题的解决方案。 准备 Ruby 运行环境由于 Redis 官方提供的集群管理工具 redis-trib.rb 是用 Ruby 编写的,因此需要先安装 Ruby 2.2.2 及以上版本,并且需要指定OpenSSL 支持。 安装 OpenSSL $ wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz $ tar -zxvf openssl-1.0.2m.tar.gz $ cd openssl-1.0.2m $ ./config --prefix=/usr/local/openssl $ ./config -t $ make $ make install $ openssl version 安装 Ruby $ yum remove ruby # 移除旧版本 $ wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz $ tar -zxvf ruby-2...
Redis 核心解析:四大优势与必学理由
https://img/18-3-15-65807497.jpg Redis 是什么?全称:Remote Dictionary Server Redis 是一款基于键值对的 NoSQL 内存数据库,采用 ANSI C 语言编写,遵循 BSD协议。它支持网络访问,既可基于内存运行,也可持久化存储,是一种日志型、键值存储的数据库,并为多种编程语言提供了 API 接口。 Redis 最显著的特性是将所有数据存储在内存中,因此读写性能极佳。同时,它也支持通过快照(RDB)和日志(AOF)两种方式将内存中的数据持久化到硬盘,确保在断电、机器故障等异常情况下数据不丢失,并能从硬盘恢复数据至内存。 官方网站:https://redis.io/中文网站:http://www.redis.cn/GitHub 仓库:https://github.com/antirez/redis Redis 的四大核心优势 极高的性能与速度Redis 命令执行速度极快,官方标称的读写性能可达每秒 10 万次。其高速源于以下几个因素: 数据直接存储于内存,访问路径极短。 采用底层 C 语言实现,更贴近操作系统。 ...
