首页
复制
搜索
前进
后退
重载网页
和我当邻居
给我留言吧
首页
统计
关于
WOW怀旧
友链
更多
留言
壁纸
直播
Search
1
关于《杀死那个石家庄人》背后的故事
3,797 阅读
2
沈阳故宫之旅
608 阅读
3
摄影记录|鸿恩寺
562 阅读
4
赤壁赋| 知不可乎骤得,托遗响于悲风
423 阅读
5
Laravel-admin 删除行|删除回调
366 阅读
编程技术
GoLang
Vue
PHP
Linux
Redis
网络安全
生活杂记
登录
Search
标签搜索
PHP
随笔
Mysql
Laravel-Admin
Laravel
摄影
设计模式
Ab
Linux
Javascript
MAC
支付
CentOs
sh
嘉陵江
南滨路
蓝易云
redis
万能青年
累计撰写
60
篇文章
累计收到
142
条评论
首页
栏目
编程技术
GoLang
Vue
PHP
Linux
Redis
网络安全
生活杂记
页面
统计
关于
WOW怀旧
友链
留言
壁纸
直播
搜索到
60
篇与
的结果
2023-11-03
PHP二维数组通过子数组值排序
代码 $array= [ [ 'a'=>'3:地址1' ], [ 'a'=>'1:地址2' ], [ 'a'=>'4:地址3' ], [ 'a'=>'' ] ]; foreach ($array as $key=>&$value) { if (empty($value['a'])){ $value['sort_'] = 0; }else{ $value['sort_'] = explode(':',$value['a'])[0]; } } usort($array, function($a, $b){ return $a['sort_'] - $b['sort_']; //这里为asc排序 若要求desc 则改为 b-a 即可 }); var_dump($array);
2023年11月03日
70 阅读
0 评论
0 点赞
2023-06-24
杂文|随笔
随笔那是很久以前 午睡之后 太阳还要很久才会落山我守着年轻的一切没有去处整个下午,全都是蓝色的空旷 永远漫长日子里有野鸟在飞有盛夏的蝉鸣直到我踏上了成长的旅程掉入生活之中,无路进也无路退长大,是一去不回
2023年06月24日
142 阅读
0 评论
0 点赞
2023-05-27
今夜·不是雨夜
今夜·不是雨夜不知道第几个没有入睡的夜晚想起那些令人紧张的事我的心跳开始加速我的呼吸也跟着变得急促大概在漫长的成长里变得坚强和长出息是一个强制载入的程序而我并不想因此在别人眼里变得伟大我时常很想静下来看看自己的心重新认识一下我自己和那个经常迷失在巨大潮水里的孩子说上哪怕一分钟的话也好外面的世界从不间断的热热闹闹比起小时候让人心动的漂亮玩具我开始更喜欢赤裸的真实不管这真实是否充满了致命的危险梦里的道路和城市开始倒塌顺着目光所及之处所有的一切 所有的一切开始无法挽回的坠落那些翻箱倒柜打开的情绪如同坐上了飞驰的过山车一般每一个白天我都像奔赴战场的战士每一个夜晚我都是差点杀死自己的病人我总会幻想有一天走在街头刚好被一颗无意的流弹砸中这是一种看上去顺其自然又毫无痕迹的结束方式我想让自己再坚持一下再坚持一下就好了而这份生来的敏锐和脆弱总在刺痛我可在浩瀚的宇宙面前 有谁是强大的吗我可以让自己生出新的期待吗对一切不再心动比失望更加令人绝望我唯一还在等待的 是雨季的到来这是上天给人间最公平的馈赠此刻我努力让自己去想想那些美好的事当春天的植物嫩芽 第一次长出来当我对遥远的星空还心存幻想这些才是我坚持到现在的原因啊我们还能像分着糖果吃的孩子那般快乐吗当脸庞的青涩一点点消失的时候当我要老了 不再年少的时候还在用无数的徒劳去搭建虚构的堡垒我紧紧抱着怀里这份沉甸甸的善良这是给我最好的礼物在看不到尽头的海面上这是唯一的光亮 这是唯一的引航灯夜晚是星星的避难所吗我心中那一轮圆月使我所有的痛苦和棱角有了可以生长的缝隙黑夜会和星星一起落幕太阳还没升起的时候所有的一切都像一个梦太阳还没升起的时候所有的一切都像一个梦
2023年05月27日
118 阅读
0 评论
4 点赞
2023-05-16
centos磁盘扩容(非挂载新磁盘)
前景{callout color="#f0ad4e"}添加了磁盘之后 centos-root/home的大小没变{/callout}查看磁盘fdisk -l创建分区fdisk /dev/vda 依次输入指令 m n p w (这里 sda是根据服务器磁盘而来,通过fdisk -l 查看)重启系统reboot创建物理卷pvcreate /dev/sda3tips:这里sda3或者其他数字,视情况而定将新增加的分区/dev/sda3加入到根目录分区centos中 vgextend centos /dev/sda3增加centos大小lvresize -l +100%FREE /dev/mapper/centos-roottips:这里也可以使用大写的L 后 加上想要分配的容量,例如 lvresize -L +100G /dev/mapper/centos-root,但一般都是分配100%的空域空间重新识别centos大小 xfs_growfs /dev/mapper/centos-root重启服务因为服务器重启过,请自行检测相关服务是否启动,比如docker
2023年05月16日
78 阅读
0 评论
0 点赞
2023-05-12
Redis中的缓存穿透、雪崩、击穿的原因以及解决方案
缓存穿透大量请求根本不存在的key解决方案对空值进行缓存设置白名单使用布隆过滤器网警缓存雪崩redis中大量key集体过期解决方案进行预先的热门词汇的设置,进行key时长的调整实时调整,监控哪些数据是热门数据,实时的调整key的过期时长使用锁机制缓存击穿redis中一个热点key过期 (大量用户访问该热点key,但是热点key过期)解决方案进行预先的热门词汇的设置,进行key时长的调整实时调整,监控哪些数据是热门数据,实时的调整key的过期时长使用锁机制(只有一个线程可以进行热点数据的重构){dotted startColor="#ff6c6c" endColor="#1989fa"/}三者出现的根本原因:Redis命中率下降,请求直接打在DB上正常情况下,大量的资源请求都会被redis响应,在redis得不到响应的小部分请求才会去请求DB,这样DB的压力是非常小的,是可以正常工作的 如果大量的请求在redis上得不到响应,那么就会导致这些请求会直接去访问DB,导致DB的压力瞬间变大而卡死或者宕机{callout color="#f0ad4e"}① 大量的高并发的请求打在redis上② 这些请求发现redis上并没有需要请求的资源,redis命中率降低③ 因此这些大量的高并发请求转向DB(数据库服务器)请求对应的资源④ DB压力瞬间增大,直接将DB打垮,进而引发一系列“灾害”{/callout}问题名称缓存穿透缓存击穿缓存雪崩资源是否存在DB数据库服务器中×√√资源是否存在Redis中×××redis没有对应资源的原因根本不存在该资源(DB也没有)某个热点key过期大部分key集体过期根本原因大量的高并发的请求打在Redis上,但是发现Redis中并没有请求的数据,redis的命令率降低,所以这些请求就只能直接打在DB(数据库服务器)上,在大量的高并发的请求下就会导致DB直接卡死、宕机{dotted startColor="#ff6c6c" endColor="#1989fa"/}情景分析#缓存穿透 缓存穿透产生的原因:请求根本不存在的资源(DB本身就不存在,Redis更是不存在)例:客户端发送大量的不可响应的请求{callout color="#f0ad4e"}当大量的客户端发出类似于:http://localhost:8080/user?id=-100 的请求,就可能导致出现缓存穿透的情况。因为数据库DB中本身就没有id=-100的用户的数据,所以Redis也没有对应的数据,那么这些请求在redis就得不到响应,就会直接打在DB上,导致DB压力过大而卡死情景在线或宕机。缓存穿透很有可能是黑客攻击所为,黑客通过发送大量的高并发的无法响应的请求给服务器,由于请求的资源根本就不存在,DB就很容易被打垮了。{/callout}解决方式对空值进行缓存类似于上面的例子,虽然数据库中没有id=-100的用户的数据,但是在redis中对他进行缓存(key=-100,value=null),这样当请求到达redis的时候就会直接返回一个null的值给客户端,避免了大量无法访问的数据直接打在DB上实时监控对redis进行实时监控,当发现redis中的命中率下降的时候进行原因的排查,配合运维人员对访问对象和访问数据进行分析查询,从而进行黑名单的设置限制服务(拒绝黑客攻击)使用布隆过滤器使用BitMap作为布隆过滤器,将目前所有可以访问到的资源通过简单的映射关系放入到布隆过滤器中(哈希计算),当一个请求来临的时候先进行布隆过滤器的判断,如果有那么才进行放行,否则就直接拦截接口校验类似于用户权限的拦截,对于id=-100这些无效访问就直接拦截,不允许这些请求到达Redis、DB上。#注意事项使用空值作为缓存的时候,key设置的过期时间不能太长,防止占用太多redis资源对空值缓存是一种被动的防御方式,当遇到黑客暴力请求很多不存在的数据就需要写入大量的null值到Redis中,可能导致Redis内存占用不足的情况使用布隆过滤器,可以在用户访问的时候判断该资源是否存在,不存在则直接拒绝访问布隆过滤器是有一定的误差,所以一般需要配合一些接口流量的限制(规定用户在一段时间内访问的频率)、权限校验、黑名单等来解决缓存穿透的问题#缓存雪崩 {callout color="#f0ad4e"}当redis中的大量key集体过期,可以理解为redis中的大部分数据都被清空了(失效了),那么这时候如果有大量并发的请求来到,那么redis就无法进行有效的响应(命中率急剧下降),请求就都打到DB上了,到时DB直接崩溃{/callout}#解决方式将失效时间分散开通过使用自动生成随机数使得key的过期时间是随机的,防止集体过期使用多级架构使用nginx缓存+redis缓存+其他缓存,不同层使用不同的缓存,可靠性更强设置缓存标记记录缓存数据是否过期,如果过期会触发通知另外的线程在后台去跟新实际的key使用锁或者队列的方式如果查不到就加上排它锁,其他请求只能进行等待#缓存击穿 {callout color="#f0ad4e"} 类似于“某男明星塌房事件”上了热搜,这时候大量的“粉丝”都在访问该热点事件,但是可能优于某种原因,redis的这个热点key过期了,那么这时候大量高并发对于该key的请求就得不到redis的响应,那么就会将请求直接打在DB服务器上,导致整个DB瘫痪。{/callout}#解决方案提前对热点数据进行设置类似于新闻、某博等软件都需要对热点数据进行预先设置在redis中监控数据,适时调整监控哪些数据是热门数据,实时的调整key的过期时长使用锁机制只有一个请求可以获取到互斥锁,然后到DB中将数据查询并返回到Redis,之后所有请求就可以从Redis中得到响应
2023年05月12日
129 阅读
0 评论
3 点赞
1
2
...
12