![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
高并发解决方案汇总
生产实力
cloud-笔记
这个作者很懒,什么都没留下…
展开
-
-笔记 tps qps
并发处理原创 2023-05-07 15:29:07 · 567 阅读 · 1 评论 -
Mysql数据库的优化方案
Mysql数据库的优化 1.引擎的优化 2.索引的优化 3.分库分表 4.读写分离 5.使用缓存 MySQL性能优化 从以下三个问题考虑: 1. 单条 SQL 运行慢 3. 部分 SQL 运行慢 4. 整个 SQL 运行慢 问题 1:单条 SQL 运行慢 问题分析 造成单条 SQL 运行比较慢的常见原因有以下两个: 1. 未正常创建或使用索引 2. 表中数据量太大 解决方案 1:创建并正确使用索引 索引是一种能帮助 MySQL 提高查询效率的主要手段,因此一般情况下我们遇到的单条 SQL 性能问题,通常原创 2022-04-11 22:01:35 · 474 阅读 · 0 评论 -
什么是死锁怎么避免?
一,什么是死锁? 两个或者多个互相竞争共享资源的线程,因为互相等待,导致‘永久’阻塞的现象 二,产生死锁的原因? 同时满足4个条件 互斥条件:共享资源x和y只能被一个线程占用,且等待。 线程1已经取得共享资源x,在占用共享资源y的时候,不释放共享资源x 不可抢占,其他线程不能抢占线程1占有的共享资源x 循环等待:线程1 等待线程2占有的共享资源,线程2等待线程1的 三,怎么避免死锁? 打破其中任何一个条件 1.线程互斥没法解决,本身就是解决线程安全的 2. 占用且等待,可以申请一次性获取资源,这样就不用等原创 2022-04-11 10:03:11 · 565 阅读 · 0 评论 -
redis和mysql如何保持数据一致性
redis和mysql如何保持数据一致性 一般情况下,redis是实现 应用和数据库之间的一个读操作的缓存层。 目的就是减少数据库的IO,提高数据库的IO性能 数据->写入缓存,读取数据,首先尝试,命中缓存就从缓存中读取数据,没有命中就去数据库中读取 查到后再把数据写到缓存。出现的问题,一份数据同时保存在redis和数据库中,当数据发声变化时,需要更新 redis和数据库,因为更新操作是有先后顺序的,不像mysql中的多表事务操作,可以满足ACID的特性 此时就会出现数据一致性的问题。 解决方法: .原创 2022-04-10 22:09:57 · 1764 阅读 · 0 评论 -
redis常规操作
高并发的瓶颈就是数据库 笔记记录 下面是redis 的client 端操作,一般还可以和上篇map+lock 联合使用。都是帮助数据库减压的好手段. //redis.go var redisClient *redis.Client func redisInit() { if redisClient == nil { redisClient = redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", Passw.原创 2021-12-28 14:16:17 · 849 阅读 · 0 评论 -
用map+lock实现redis缓存
map + lock 实现 Redis缓存 ·高并发的瓶颈就是数据库· 写这些只为笔记,不想被动收录 项目生产中 Redis 是最常用的,主要用与存放客户经常会访问的一些数据到内存里,从而减轻数据库的压力。根据需要获取你的系统不需要redis来增大开销,使用map+locak实现redis的主要功能是最好的选择. //cache.go var Cache *CacheMap //初始化 func CacheInit() { if Cache == nil { Cache = NewCacheMa原创 2021-12-28 11:55:24 · 705 阅读 · 0 评论