中间件

浏览该分类下的所有文章

Kafka Share Groups如何把事件流变成任务队列

Kafka传统消费者组把分区作为最小分配单位,消费者数量一旦超过分区数,多出的实例就只能空闲;逐条确认、失败重试、毒消息隔离和峰值扩容也往往需要业务自行补齐。Kafka 4.x引入Share Groups,以记录级获取锁替代分区独占,并提供ACCEPT、RELEASE、REJECT、RENEW四种处理结果,让多个消费者能够同时协作处理同一分区中的不同任务。本文结合Kafka 4.3.x,从工作原理、记录状态机、顺序与投递语义、Java客户端实现、关键配置、幂等设计、长任务续锁、保留策略和迁移步骤等方面展开,说明Share Groups适合哪些任务队列场景,又为何不能简单视为RabbitMQ等传统消息队列的完全替代品。

从性能、安全到生产迁移实战

Valkey 9.1 已不再只是 Redis OSS 7.2 的兼容分支,而是在安全、可观测性、I/O 性能、内存效率和集群运维上形成独立路线。本文解析数据库级 ACL、Lua 模块化、TLS 热更新、JSON 日志、线程利用率指标、HGETDEL、MSETEX 与 CLUSTERSCAN 等变化,并结合 Java 客户端兼容、复制迁移、灰度切换、数据校验和真实压测,说明哪些 Redis 项目适合迁移、哪些场景需要谨慎,以及如何保留生产回滚能力。

一个“搜不到”的问题,重构了整个搜索链路

博客搜索看似只是一次关键词查询,但真正可靠的搜索需要处理输入规范化、召回策略、排序逻辑、分页一致性、缓存隔离以及用户反馈等多个环节。本文记录一次真实的博客搜索重构过程:针对短关键词“AI”无法命中的问题,分析 MySQL 全文检索与模糊匹配叠加导致的召回缺陷,重新设计搜索契约,将字面匹配作为结果召回依据,全文检索作为排序辅助,同时完善 URL 编码、分页边界、空结果状态和自动化测试。通过这次改造,搜索功能从“偶尔能用”变成了一条行为明确、结果稳定、可持续演进的搜索链路。

微信公众号API+Redis实现内容访问控制

实现基于微信公众号验证码的文章解锁功能:未关注用户仅能阅读文章前1/3,底部“查看全文”引导关注;关注后发送关键词“博客”即获6位数字验证码,验证码存入Redis(5 分钟有效、单次使用),前端通过 CSS max‑height 与渐变遮罩实现内容截断。用户验证成功后在浏览器 LocalStorage 标记全局解锁状态,实现全站解锁。后端采用 Spring Boot 提供验证码生成/验证 API 与微信消息处理接口,配合 Redis 保存验证码,整体架构为 浏览器 ↔ Spring Boot ↔ Redis ←→ 微信服务器。实现步骤包括 Redis 配置、验证码服务实现、微信接入及前端交互逻辑。

Elasticsearch初体验-----将MySQL的数据导入kibana并展示到页面

本文详细演示了在已装 Docker 的服务器上,使用 Docker 部署单节点 Elasticsearch(7.12.1)和 Kibana(7.12.1),包括创建专用网络、加载镜像、配置容器参数及端口映射。随后通过 Kibana 的 DevTools 界面验证 ES 连接,并使用 MyBatis‑Plus 编写 Java 示例代码,将 MySQL 中的酒店数据批量转换为文档(HotelDoc),利用 RestHighLevelClient 的 BulkRequest 写入名为 hotel 的索引。最终在 Kibana 页面成功展示导入的数据,实现 MySQL 数据在 Elasticsearch 与 Kibana 可视化的完整流程。

Redis实战常见问题与解决方案

Redis在Java项目中常见的穿透、击穿、雪崩等缓存问题,可通过布隆过滤、互斥锁或逻辑过期、随机TTL等手段防御;为保证缓存与库的一致性,采用延迟双删或基于消息队列的最终一致方案;大key导致内存压力时,可拆分分片或使用合适的数据结构;通过配置allkeys‑lru、合理的maxmemory‑policy 以及 Jedis 连接池的 maxTotal、maxIdle、testOnBorrow 等参数,提升内存管理和连接稳定性。整体提供了代码示例和实践要点,帮助开发者在实际使用 Redis 时避免性能瓶颈和数据错误。

Redis6标准配置文件

本文提供 Redis 6 标准配置文件示例,说明如何通过命令行加载配置、单位写法以及包含其它文件的用法。列出模块加载方式、网络参数(bind、protected‑mode、端口、tcp‑backlog、unix‑socket、连接超时、keepalive)及其安全警示。重点介绍 TLS/SSL 配置,包括启用 tls‑port、证书/私钥文件、客户端证书、DH 参数、CA 证书及客户端认证模式。整体展示各项可选指令的作用与最佳实践。

CentOS 7 安装 JDK 8、MySQL 8、Redis 6、Nginx保姆级教程

本文提供在 CentOS 7 上一步步安装 JDK 8、MySQL 8、Redis 6 与 Nginx 的完整指南。包括卸载旧 Java、使用 yum 安装 OpenJDK 并配置环境变量;添加阿里云和 MySQL 官方仓库、安装并启动 MySQL、开放 3306 端口;安装编译依赖后源码编译 Redis、编辑配置、创建 systemd 服务实现开机自启;通过 epel 安装 Nginx、设置开机启动、检查状态并放通 HTTP/HTTPS 防火墙端口。

SpringBoot+Elasticsearch按日期实现动态创建索引

文章介绍了在 SpringBoot 中通过 @Document 的 EL 表达式实现 Elasticsearch 按日期动态创建索引的完整方案。核心思路是把索引后缀(如 yyyy_MM_dd)封装为 Bean(esIndex),并在每天零点的定时任务中销毁旧 Bean、重新注册新值,同时手动调用 ElasticsearchRestTemplate 创建索引,以保证 shards、replicas 等配置不丢失。实体类需声明 createIndex = false,避免自动创建导致参数缺失;示例代码包括配置类、实体、Repository 与 Controller,演示了定时更新索引和保存数据后在 Kibana 中观察新索引的效果。

win10下部署emqx,报错Unable to load emulator DLL问题

在 Windows 10 上部署 EMQX 时,直接运行 `emqx start` 会报 “Unable to load emulator DLL”。原因是缺少 Erlang/OTP 运行时。解决办法是先从 Erlang 官方或阿里云盘下载安装 Erlang/OTP,完成后重新打开命令行,进入 EMQX 的 `bin` 目录执行 `emqx install`。安装成功后再执行 `emqx start`,即可在浏览器访问 `http://127.0.0.1:18083`,使用用户名 `admin`、密码 `public` 登录。完成后可通过 `emqx stop` 停止服务。

Redis(一)

Redis是一款基于内存的键值NoSQL,常用于缓存、计数、排行榜、分布式锁和消息队列等。支持字符串、哈希、列表、集合、有序集合等核心数据结构,5.0 新增 Streams。单线程通过 IO 多路复用和内存操作实现高吞吐,持久化提供 RDB、AOF 与混合模式;过期采用惰性+定时扫描,淘汰策略包括 noeviction、volatile‑lru、allkeys‑lfu 等。高可用可通过 Sentinel 实现自动故障转移,或使用 Cluster 进行分片。文中还说明了 setnx/SET NX 实现分布式锁、watch 乐观锁以及主从同步机制。

Redis(二)

本文系统阐述了Redis的关键特性与实践。首先介绍Redis Cluster 的优势在于突破单机内存、并发与流量瓶颈,实现负载均衡,但批量操作、事务、多库及多层复制受限。随后解析hash、zset 两大数据结构的底层实现:当键值数量少且长度短时采用压缩列表(ziplist),否则使用哈希表(dict)或跳跃表(skiplist),并说明 dict 的渐进式 rehash 机制。最后给出 Redis 在分布式场景下的典型应用——基于键值存储的 Session 共享以及分布式锁的实现思路,强调利用 setnx+expire 等原子指令保证安全可靠。