- 博客(57)
- 收藏
- 关注
原创 《Redis可扩展:轻松应对数据增长与流量高峰》
在数字化浪潮下,数据增长与流量高峰对数据库提出挑战,Redis以出色可扩展性脱颖而出。水平扩展上,数据分片通过客户端分片或Redis Cluster分片,将数据分散存储,突破单节点限制;读写分离基于主从复制,把读请求分散到从节点,提升读性能;功能扩展借助模块机制,允许开发者自定义数据结构和命令。实践中,还需做好容量规划与监控、性能优化调优、高可用与容灾设计。这些技术与策略协同,使Redis能灵活应对业务变化,为企业数据存储和处理筑牢根基。
2025-06-30 16:46:26
772
原创 《Redis高性能:揭秘内存数据库的极致速度》
Redis作为高性能内存数据库,其性能优势源于多方面技术。内存存储替代磁盘,实现数据毫秒级读写;丰富数据结构及动态编码,依数据特性选最优存储方式;单线程结合I/O多路复用,规避线程开销与锁竞争,高效处理多客户端请求;此外,合理配置参数、优化客户端连接、实施数据分片等策略,进一步提升性能。这些技术与策略协同,使Redis在高并发、低延迟场景表现卓越,成为众多应用的数据存储优选方案。
2025-06-30 16:44:15
802
原创 《Redis高并发优化策略与规范清单:从开发到运维的全流程指南》
本文聚焦Redis高并发优化,提供从开发到运维全流程指南。开发阶段,强调key设计规范、合理选择数据结构与设置过期时间;性能优化上,通过Pipeline批量操作、Lua脚本、读写分离提升QPS。运维时,监控总key数、命中率等核心指标,实施分级告警;对大key和热key进行发现与治理。面对突发流量和节点故障,分别给出调整参数、启用限流及故障转移等应对方案。这些策略与规范帮助开发者和运维人员构建高效稳定的Redis系统,为业务提供有力支撑。
2025-06-23 22:51:17
852
原创 《去哪儿网Redis高并发实战:从问题定位到架构升级》
文章围绕去哪儿网五一假期 Redis 高并发难题,阐述优化实践。业务流量高峰下,出现热点 key 致单节点 CPU 过高、缓存雪崩等问题。通过`redis-cli --bigkeys`与慢查询日志定位问题后,实施热 key 多副本拆分、逻辑过期+异步刷新、本地缓存前置等策略,还进行集群拆分、搭建监控体系与大 key 治理。优化后,单节点 CPU 峰值从 90%降至 35%,缓存命中率提升至 96.5%,DB 回源 QPS 大幅降低,接口响应时间缩短,为同类场景优化提供了借鉴。
2025-06-23 22:49:00
801
原创 《Redis高并发三大核心问题:雪崩、穿透、击穿的全解决方案》
在高并发场景下,Redis 面临缓存雪崩、穿透、击穿三大核心问题。缓存雪崩源于大量缓存集中失效致数据库过载;缓存穿透是恶意请求针对不存在数据,使请求直达数据库;缓存击穿则是热点 key 失效瞬间引发大量请求冲击数据库。对应解决方案有错峰过期、多级缓存、布隆过滤器、互斥锁等。某电商大促时通过这些方案,将缓存命中率从 65% 提升至 92%,数据库负载下降 60% ,接口超时率降至 5% 以下。开发者需依业务场景灵活运用方案,保障 Redis 高并发稳定运行。
2025-06-22 11:38:46
848
原创 《Redis高并发架构设计:从单机到Cluster的最佳实践》
文章围绕Redis高并发架构设计,介绍从单机到Cluster的演进。摘要将提炼核心要点,助你快速了解Redis架构知识。### Redis高并发架构设计:从单机到Cluster的最佳实践摘要本文聚焦Redis高并发架构设计,阐述基础部署模型差异,单机模式适用于测试等场景,主从+Sentinel满足中小规模业务,Redis Cluster支撑核心生产环境。深入解析Cluster架构槽位分片与高可用原理,针对热点key和跨槽事务痛点,提出多副本、本地缓存及Lua脚本等解决方案。结合去哪儿网实战,分享混合
2025-06-22 11:32:44
590
原创 《核心参数调优指南》
本文聚焦 Redis 核心参数调优。网络配置上,tcp-backlog可调节套接字队列长度应对突发流量,tcp-keepalive能保持连接活性;内存管理方面,maxmemory建议设为物理内存 70% - 80% ,并根据场景选择如allkeys-lru(热点数据)、volatile-ttl(时效性数据)等淘汰策略。此外,appendfsync影响持久化性能与数据安全,maxclients限制客户端连接数。合理配置这些参数,结合业务场景动态调整,可保障 Redis 高效稳定运行。
2025-06-22 11:26:48
747
原创 《Redis性能极限与典型场景 》
本文深入探讨 Redis 性能极限与典型应用场景。单节点 Redis 理想状态下 QPS 为 1 万 - 10 万,实际受硬件配置、命令复杂度等因素影响,如某电商通过优化硬件、命令及缓存策略,使首页缓存单节点 QPS 达 8 万。高并发场景中,双十一商品详情页面临超 50 万 QPS 请求及热点 key 问题,短视频推荐存在数据更新频繁、高并发请求等挑战。针对这些,可采用缓存预热、读写分离、异步更新缓存等策略优化,以提升系统性能与稳定性。
2025-06-22 11:18:53
661
原创 《 Redis高并发核心原理:单线程为何能扛住百万QPS?》
本文深入剖析Redis单线程架构实现高并发的核心原理。Redis采用单线程Reactor模型,借助epoll实现I/O多路复用,避免线程切换与锁竞争,搭配纯内存存储和高效数据结构(如SDS、跳表),实现10万级QPS响应。其性能优化涵盖CPU指令集、网络栈、内存管理等层面,通过pipeline、Lua脚本等技术提升效率。文中还结合电商、短视频等实战场景,分析单节点性能边界与瓶颈定位方案,揭示单线程架构在减少上下文切换、避免锁竞争等方面的设计哲学,以及集群扩展、多线程变体等演进方向。
2025-06-20 09:03:12
755
原创 《分布式系统实战:从 0 到 1 设计千万级用户聊天室》
本文聚焦千万级用户聊天室的分布式系统设计与实战。通过分层架构设计,明确表现层、接入层、业务逻辑层和数据层职责,并合理选型 Kafka、Redis 等中间件,搭配多机房容灾方案,保障系统稳定运行。借助 TCP 可靠传输和 Redis 持久化实现消息一致性,利用 DNS 轮询与 Nginx 负载均衡完成流量调度。同时,通过模拟故障演练制定应急预案,并总结性能优化、数据一致性保障和可扩展性设计的避坑经验,为分布式聊天室系统建设提供全面指导。
2025-06-16 12:35:52
1100
原创 《Linux 系统级优化:应对高并发场景的内核参数调优》
在高并发场景下,Linux系统性能关乎服务稳定性。文章围绕内核参数调优展开,TCP/IP协议栈中,通过`SO_REUSEADDR`提升端口复用、`TCP_NODELAY`降低传输延迟,结合其他参数增强网络性能;文件描述符限制调整从用户和系统层级扩大资源上限;内存管理通过修改`swappiness`减少交换、优化OOM Killer策略保障关键进程。同时,借助`ss`、`sar`、`perf`等工具监控性能,并给出系统初始化脚本。多维度优化策略助力Linux系统在高并发场景下高效稳定运行 。
2025-06-16 12:33:36
1169
原创 《微服务架构下的组件化设计与落地实践》
本文聚焦微服务架构下营销活动系统的组件化设计与实践。业务驱动因素包括活动类型多样化、市场响应需求及性能差异化。借助领域驱动设计,通过领域建模、限界上下文和聚合根实现组件划分。对比 HTTP、RPC 和消息队列三种通信方案的优劣与适用场景。采用 Maven 多模块结合 SemVer 规范解决版本管理与依赖冲突。最后通过案例展示从单体架构到垂直拆分、再到组件化拆分的演进路径,为提升系统可维护性、扩展性及应对业务快速迭代提供解决方案
2025-06-16 12:27:20
512
原创 《高并发系统性能优化三板斧:缓存 + 异步 + 限流》
本文围绕高并发系统性能优化展开,从缓存、异步、限流三个维度深入解析。在缓存策略上,对比本地缓存 Caffeine 与分布式缓存 Redis 的应用场景并给出配置示例;异步化改造结合线程池与消息队列,优化任务处理效率;限流组件选型涵盖单机 Guava RateLimiter 与分布式 Sentinel 的实践方案。通过会员活动场景展示全链路压测流程,介绍 Arthas 在性能瓶颈定位中的实战用法。优化后系统平均响应时间从 500ms 降至 120ms,QPS 提升 900%,为高并发系统构建提供完整技术路径。
2025-06-14 22:16:01
1484
1
原创 《Apollo 配置中心在动态主题系统中的设计与扩展》
本文聚焦 Apollo 配置中心在动态主题系统中的设计与扩展。分析 DIY 主题模板动态加载需求,阐述 Apollo 客户端与服务端长轮询 + WebSocket 双模式交互流程,详解基于 Spring Boot Actuator 和自定义监听器的配置热更新实现,以及生产、灰度、测试环境的配置隔离方案。通过代码示例展示主题模板实时推送功能,包括主题配置模型定义、实时推送服务实现等。实践表明,该方案使配置更新延迟优化至 1 秒,客户端内存占用降低 30%,为动态主题系统的高效管理提供完整技术路径
2025-06-14 22:14:09
1116
原创 《Elasticsearch 分布式搜索在聊天记录检索中的深度优化》
本文聚焦 Elasticsearch 在聊天记录检索中的深度优化。针对聊天记录数据量大、查询复杂等问题,从索引设计入手,介绍分词器选择、动态映射优化及索引生命周期管理;在查询性能调优方面,解析 Bool Query 缓存和 DFS Query Rewrite 机制;集群架构上,采用智能分片与冷热节点策略实现负载均衡;结合 Redis 进行热点数据预热,减少 ES 查询压力。实战中,千万级数据量下查询响应时间从 500ms 优化至 200ms,单节点 QPS 提升至 2000+,为聊天记录检索提供高效解决方案
2025-06-14 22:08:12
1160
原创 《Kafka 在实时消息系统中的高可用架构设计》
本文聚焦 Kafka 在实时消息系统中的高可用架构设计与实践。从聊天室消息推送系统的多副本集群搭建与分区策略优化入手,解析消费者组 Rebalance 机制及优化手段,阐述通过分区分配与本地队列缓存保证消息顺序性的方法,深入分析数据积压成因并给出限流、扩容等解决方案。最后结合弹幕游戏场景,展示实时消息吞吐量优化实践。全文通过流程图直观呈现架构设计,为高并发实时消息系统构建提供完整技术方案。
2025-06-14 22:04:36
1290
原创 分布式锁实战:Redisson vs. Redis 原生指令的性能对比
本文聚焦分布式锁在DIY 主题模板系统的应用,对比 Redisson 与 Redis 原生指令方案。Redisson 基于 RedLock 算法实现多节点可靠锁,支持可重入、自动续期等特性,而原生指令存在超时误删、不可重入及单点故障问题。压测显示,原生指令 TPS 达 1.2 万、延迟 8ms 但可靠性低,Redisson TPS 约 8 千、延迟 15ms 但锁误删率为 0 且支持故障容错。建议短耗时、性能敏感场景选原生指令,长耗时、强一致性场景用 Redisson,需结合业务需求平衡性能与可靠性
2025-06-08 23:15:47
954
原创 《Netty 在千万级并发弹幕游戏中的应用与性能优化》
本文聚焦 Netty 在聊天千万级并发弹幕游戏中的实践,解析其高并发支撑方案。基于 NioEventLoopGroup 主从 Reactor 线程模型,通过分离业务线程、动态调优线程数提升处理效率;设计含魔数 / 长度 / 类型的自定义协议,利用 LengthFieldBasedFrameDecoder 解决粘包问题。借助 Epoll 实现单服务器 10 万 + 长连接管理,优化 TCP 参数与文件描述符限制。结合 Redis 分布式缓存与心跳检测机制,保障游戏状态实时同步。附 Netty 服务端启动及协议
2025-06-08 23:08:49
620
原创 《Spring Boot 微服务架构下的高并发活动系统设计与实践》
本文聚焦 Spring Boot 微服务架构下高并发活动系统设计与实践。阐述从单体架构到微服务架构的演进,针对会员营销活动场景,利用 Redis 解决缓存穿透、击穿、雪崩问题,借助 Kafka 实现异步处理削峰填谷。介绍活动引擎与规则引擎的组件化拆分及代码实现,通过实战案例展示日均 10 万 + 流量活动中,QPS 从 2000 优化至 8000+、响应时间<300ms 的过程,为高并发系统设计提供参考
2025-06-08 23:01:48
1221
1
原创 基于Arduino的智能家居系统设计
基于Arduino的智能家居系统设计一、设计要求 1、利用DHT11温湿度检测模块和光敏电阻采集环境温度、湿度和光强信息;2、通过Arduino开发板对DS1302时钟模块进行初始设置,并每隔一定时间读取日期和时间信息;3、利用LCD1602显示模块显示温度、湿度、光强、日期、时间和控制模式等信息;4、根据从DS1302时钟模块读取的时间信息,每天固定时间给宠物进行自动投食、喂水若干次;5、能够在自动控制模式和语音控制模式之间进行切换;6、自动控制模式下,根据温度、湿度、光强等环境参数对灯、空
2021-12-29 14:57:43
24835
13
原创 合并两个有序数组+寻找第K个大的数+子数组最大累计问题
合并两个有序数组class Solution {public: void merge(int A[], int m, int B[], int n) { if(n==0) return ; int i=m-1; int j=n-1; int end=m+n-1; while(end>=0&&j>=0&&i>=0) { if(A[i]
2021-09-05 22:11:35
201
原创 使用C++ 多线程交替打印
//////////////////无锁实现#include <iostream>#include <thread>using namespace std;int number;const int MAXNUM = 10; // 输出范围:1 - MAXNUM// 打印奇数void add_1() { while (1) { if (number % 2 == 0) { int temp_number = numbe
2021-08-27 16:15:29
843
原创 二叉树的直径+镜像交换
#include<iostream>#include<string>using namespace std;struct TreeNode{ int val; struct TreeNode*left; struct TreeNode*right; TreeNode(int x):val(x),left(nullptr),right(nullptr){}};//二叉树的镜像TreeNode* mirrorTree(TreeNode* root) {
2021-08-20 10:28:50
148
原创 智能指针实现
智能指针实现#include <iostream>#include <memory>using namespace std; template<typename T> class SmartPointer { private: T* _ptr; int* _count; public: SmartPointer(T* ptr = nullptr) : _ptr(ptr) {
2021-08-18 09:19:22
239
原创 有序数组 去除重复元素
//有序数组 去除重复元素 1 2 2 3 3 5 ------------------》 1 5vector<int> fun(vector<int> &res) //有序数组 去除重复元素{ int count =0; int nflag=INT_MIN; vector<int> finsh; for(int i=0;i<res.size()-1;i++){ if(res[i]==res[i+1]) { count++
2021-08-15 20:56:59
201
原创 二分法求平方根+循环输入以回车结束
double sqrt1(double x){double eps=0.00001;double low=0.0;double high=x;double mid=(low+high)/2;while((high-low)>eps){if(mid*mid>x){high=mid;}else{low=mid;}mid=(high+low)/2;return mid;}
2021-07-30 10:14:16
106
原创 Android Studio 实现的画板App
基于Android Studio 实现的画板App** 1.实现目标**随着科技的不断发展和社会的不断进步,手机越来越流行,成为了人们日常生活和学习的必要工具,人们越来越离不开手机,还在几年前手机仅仅是一个打电话和发短信的工具,但在地球村的今天,手机无论除了可以满足基木的通讯作用以外,还成为了人们办公和娱乐的必不可少的工具。当然手机画板也成为了手机的一个基木的app软件,以前人们想画画必须在纸上或者自己携带的画板上,对于现在人们快节奏的生活不是非常方便。而手机画板的出现打破了这个固有的僵局,它可以满足人
2021-06-23 12:14:07
2761
3
原创 排序+二分查找
排序+二分查找1.归并排序归并排序 核心合并两个有序的数组开始 sum [] len 将大区间分割成多个小区间 当 begin>=end结束 调动递归函数将原数组拆分成一个一个的区间然后执行 merge的操作开始的数组空间为2merge(num [],begin end){分成两个区间需要申请一块临时的空间两个区间进行大小比较将比较的结果放入申请的临时的数组空间中当比较结束后 将申请的临时数组的空间里面的内容 拷贝到原数组中去(循环的放入) num[b
2021-05-11 22:23:28
504
原创 2.动态规划
2.动态规划动态规划算法的两种形式①自顶向下的备忘录法 , 递归 +备忘录②自底向上,迭代+备忘录 迭代动态规划原理1.最优子结构用动态规划求解最优化问题的第一步就是刻画最优解的结构,如果一个问题的解结构包含其子问题的最优解,就称此问题具有最优子结构性质。因此,某个问题是否适合应用动态规划算法,它是否具有最优子结构性质是一个很好的线索。使用动态规划算法时,用子问题的最优解来构造原问题的最优解。因此必须考查最优解中用到的所有子问题。2.重叠子问题子问题重叠性质。子问题重叠性质是指在用递
2021-05-02 21:35:24
127
转载 跳表
跳表跳表是面试常问的一种数据结构,它在很多中间件和语言中得到应用,我们最最熟知的就有Redis跳表(zset)。跳跃表(简称跳表)由美国计算机科学家William Pugh发明于1989年。他在论文《Skip lists: a probabilistic alternative to balanced trees》中详细介绍了跳表的数据结构和插入删除等操作。跳表(SkipList,全称跳跃表)是用于有序元素序列快速搜索查找的一个数据结构,跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表
2021-03-12 22:01:47
448
原创 14算法 .栈和队列+堆
14算法 .栈和队列1.通过队列实现栈 LeetCode 225a.两个队列实现栈 class MyStack {public: queue<int> q1, q2; MyStack() { } void push(int x) { if(q1.empty()){ q2.push(x); return; } if(q2.empty()){
2021-03-07 20:28:16
109
转载 操作系统
操作系统一. 什么是冯诺伊曼体系二.内存管理三.进程管理四.文件管理五.输入输出管理1.冯诺伊曼体系简介现代计算机之父冯诺伊曼最先提出程序存储的思想,并成功将其运用在计算机的设计之中,该思想约定了用二进制进行计算和存储,还定义计算机基本结构为 5 个部分,分别是中央处理器(CPU)、内存、输入设备、输出设备、总线。存储器:代码跟数据在RAM跟ROM中是线性存储, 数据存储的单位是一个二进制位。最小的存储单位是字节。总线:总线是用于 CPU 和内存以及其他设备之间的通信,总线主要有三种:
2021-03-04 18:28:22
1162
1
原创 O算法
O算法注意:尽可能利用条件, 暴力解实际没有很好的利用条件, 时间复杂度一般较高,做完之后, 可以思考, 如果没有这个条件, 暴力解能否解出来, 如果能, 就说明条件没用好。算法 尽量继承前面的计算结果, 得出或者退出后面的结果利用前面的结果要怎么做? 保存前面的结果–> 辅助空间 : 数组(便于查找不便于插入删除 ) 链表( 插入删除) 栈(后进先出 倒序) 队列(正序 先进先出)栈和队列, 没法遍历, 所以可以用数组vector或者链表list代替 :来实现空间换时间.数组 -->
2021-02-28 23:20:26
263
原创 正则表达式, shell脚本
正则表达式, shell脚本1.正则表达式1、什么是正则表达式?简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法。通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤、替换或者输出需要的字符串。linux正则表达式一般以行为单位处理的。2、为什么要学正则表达式在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要从大量的字符串内容中查找符合工作需要的特定字符串,这就要靠正则表达式,因此,可以说正则
2021-02-21 21:30:59
204
原创 线程池
线程池1.什么是线程池线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。2.为什么用线程池创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率线程并发数量过多,抢占系统资源从而导致阻塞我们知道线程能共享系统资源,如果同时执行的线程过多,就有可能导致系统
2021-02-21 16:35:10
131
原创 linux 网络模型
linux 网络模型linux的五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。其中阻塞IO、非阻塞IO、多路复用IO、信号驱动IO都属于同步IO。同步IO和异步IO同步IO:应用程序主动向内核查询是否有可用数据,如果有自己负责把数据从内核copy到用户空间。异步IO:应用程序向内核发起读数据请求需要:(1)告诉内核数据存放位置(2)注册回调函数,当内核完成数据copy后调用回调通知应用程序取数据。同步IO/异步IO最大区别:同步IO数据从内核空间到用户空间的c
2021-02-21 15:34:26
374
原创 Linux线程详解
Linux线程详解并行和并发的区别并发(concurrency):在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。(并发是指同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上有多个进程被同时执行的效果–宏观上并行,针对单核处理器)2.并行(parallelism):在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种;在多处理器系统中,进程不仅可以交替执行,而且可以
2021-02-21 12:43:30
408
原创 Linux 进程
Linux 进程一.进程二.进程间关系三.进程间通信1.进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。2.linux 进程特性 强亲缘性 父子进程进程状态主要的进程状态:运行、就绪、挂起、终止,阻塞,僵尸。一,创建原语:fork函数族在liunx中使用函数fork创建新的进程。是fork()里面的GREATE(创建壳) GLONE(初始化拷贝)函数完成的函数特点:调用一次,返回两次。在父进程
2021-02-18 14:09:22
155
原创 Makefile gdb
Linux一.项目管理工具 Makefilemakefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
2021-02-16 22:58:50
335
原创 Redis
Redis1.Redis是一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server (远程数据服务),使用C语言编写,Redis是一个key-value存储系统(键值存储系统) 它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。 Redis 作为一个内存数据库:性能优秀,数据在内存中,读写速度非常快,支持并发 10W QPS。单进程单线程,是线程安全的,采用 IO 多路复用机制。丰富的数据类型,支持字符串(strings)、散
2021-02-16 13:21:43
139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人