日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

laravel redis_如何将redis优化

發(fā)布時(shí)間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 laravel redis_如何将redis优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Redis 單線程為什么還能這么快?

因?yàn)樗械臄?shù)據(jù)都在內(nèi)存中,所有的運(yùn)算都是內(nèi)存級(jí)別的運(yùn)算,而且單線程避免了多線程的切換性 能損耗問題。

Redis 單線程如何處理那么多的并發(fā)客戶端連接?

Redis的IO多路復(fù)用:redis利用epoll來實(shí)現(xiàn)IO多路復(fù)用,將連接信息和事件放到隊(duì)列中,依次放到 文件事件分派器,事件分派器將事件分發(fā)給事件處理器。

Redis 單線程為什么還能這么快?

因?yàn)樗械臄?shù)據(jù)都在內(nèi)存中,所有的運(yùn)算都是內(nèi)存級(jí)別的運(yùn)算,而且單線程避免了多線程的切換性 能損耗問題。

700粉絲福利安排一波,工作中準(zhǔn)備的,大家隨便拿

程序猿的生活:【社群福利】30G-PHP進(jìn)階資料,助力大家都能30K?zhuanlan.zhihu.com

Redis 單線程如何處理那么多的并發(fā)客戶端連接?

Redis的IO多路復(fù)用:redis利用epoll來實(shí)現(xiàn)IO多路復(fù)用,將連接信息和事件放到隊(duì)列中,依次放到 文件事件分派器,事件分派器將事件分發(fā)給事件處理器。

其實(shí)對(duì)于redis來講,無(wú)論多少并發(fā),到了redis層都會(huì)排隊(duì),一個(gè)一個(gè)的來處理

Info: 查看redis服務(wù)運(yùn)行信息,分為 9 大塊,每個(gè)塊都有非常多的參數(shù),這 9 個(gè)塊分別是:

Server 服務(wù)器運(yùn)行的環(huán)境參數(shù)Clients 客戶端相關(guān)信息Memory 服務(wù)器運(yùn)行內(nèi)存統(tǒng)計(jì)數(shù)據(jù)

Persistence 持久化信息Stats 通用統(tǒng)計(jì)數(shù)據(jù)Replication 主從復(fù)制相關(guān)信息 CPU CPU 使用情況

Cluster 集群信息KeySpace 鍵值對(duì)統(tǒng)計(jì)數(shù)量信息

緩存穿透

緩存穿透是指查詢一個(gè)根本不存在的數(shù)據(jù), 緩存層和存儲(chǔ)層都不會(huì)命中, 通常出于容錯(cuò)的考慮, 如果從存儲(chǔ) 層查不到數(shù)據(jù)則不寫入緩存層。
緩存穿透將導(dǎo)致不存在的數(shù)據(jù)每次請(qǐng)求都要到存儲(chǔ)層去查詢, 失去了緩存保護(hù)后端存儲(chǔ)的意義。

1. 解決:可以將空對(duì)象緩存起來或者設(shè)置一個(gè)特殊意義的字符串來標(biāo)示此記錄數(shù)據(jù)庫(kù)中不存在,直接在緩存層返回

2. 布隆過濾器 對(duì)于惡意攻擊,向服務(wù)器請(qǐng)求大量不存在的數(shù)據(jù)造成的緩存穿透,還可以用布隆過濾器先做一次過濾,對(duì)于不 存在的數(shù)據(jù)布隆過濾器一般都能夠過濾掉,不讓請(qǐng)求再往后端發(fā)送。當(dāng)布隆過濾器說某個(gè)值存在時(shí),這個(gè)值可 能不存在;當(dāng)它說不存在時(shí),那就肯定不存在。

緩存失效

由于大批量緩存在同一時(shí)間失效可能導(dǎo)致大量請(qǐng)求同時(shí)穿透緩存直達(dá)數(shù)據(jù)庫(kù),可能會(huì)造成數(shù)據(jù)庫(kù)瞬間壓力過大 甚至掛掉,對(duì)于這種情況我們?cè)谂吭黾泳彺鏁r(shí)最好將這一批數(shù)據(jù)的緩存過期時(shí)間設(shè)置為一個(gè)時(shí)間段內(nèi)的不同 時(shí)間。

int expireTime = new Random().nextInt(300) + 300;

bigkey

bigkey的壞處:

1. 帶寬固定,千兆網(wǎng)卡(按照字節(jié)來算是 128M/s),假設(shè)一個(gè)key的value大小為1M,有1000個(gè)連接并發(fā),1s所占用的帶寬就是1000M,會(huì)造成網(wǎng)絡(luò)堵塞。

2. redis堵塞,單線程處理bigkey有可能造成其他連接排隊(duì)

在Redis中,一個(gè)字符串最大512MB,一個(gè)二級(jí)數(shù)據(jù)結(jié)構(gòu)(例如hash、list、set、zset)可以存 儲(chǔ)大約40億個(gè)(2^32-1)個(gè)元素,但實(shí)際中如果下面兩種情況,我就會(huì)認(rèn)為它是bigkey。

1. 字符串類型:它的big體現(xiàn)在單個(gè)value值很大,一般認(rèn)為超過10KB就是bigkey。

2. 非字符串類型:哈希、列表、集合、有序集合,它們的big體現(xiàn)在元素個(gè)數(shù)太多。

一般來說,string類型控制在10KB以內(nèi),hash、list、set、zset元素個(gè)數(shù)不要超過5000(超過5000了可以采用分拆思想)

過期鍵清除策略

Redis對(duì)于過期鍵有三種清除策略:

· 被動(dòng)刪除:當(dāng)讀/寫一個(gè)已經(jīng)過期的key時(shí),會(huì)觸發(fā)惰性刪除策略,直接刪除掉這個(gè)過期key

· 主動(dòng)刪除:由于惰性刪除策略無(wú)法保證冷數(shù)據(jù)被及時(shí)刪掉,所以Redis會(huì)定期主動(dòng)淘汰一批已過期的key)

· 當(dāng)前已用內(nèi)存超過maxmemory限定時(shí),觸發(fā)主動(dòng)清理策略

主動(dòng)清理策略又分五種

· allkeys-lru:根據(jù)LRU算法刪除鍵,不管數(shù)據(jù)有沒有設(shè)置超時(shí)屬性,直到騰出足夠空間 為止。

· allkeys-random:隨機(jī)刪除所有鍵,直到騰出足夠空間為止。

· volatile-random: 隨機(jī)刪除過期鍵,直到騰出足夠空間為止。

· volatile-ttl:根據(jù)鍵值對(duì)象的ttl屬性,刪除最近將要過期數(shù)據(jù)。如果沒有,回退到noeviction策略。 (常用)

· noeviction:不會(huì)剔除任何數(shù)據(jù),拒絕所有寫入操作并返回客戶端錯(cuò)誤信息"(error)OOM command not allowed when used memory",此時(shí)Redis只響應(yīng)讀操作。

phper 在進(jìn)階的時(shí)候總會(huì)遇到一些問題和瓶頸,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那 里入手去提升,對(duì)此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、

高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql 優(yōu)化、

shell 腳本、Docker、微服務(wù)、Nginx 等多個(gè)知識(shí)點(diǎn)高級(jí)進(jìn)階干貨需要的可以免費(fèi)分享給大家

這些的話是在下面的直播課中講解過很多期,并且在不斷更新中

大廠必備面試題,來拿吧!

程序猿的生活:PHP經(jīng)典面試題集(含答案)?zhuanlan.zhihu.com

以上內(nèi)容希望幫助到大家,很多PHPer在進(jìn)階的時(shí)候總會(huì)遇到一些問題和瓶頸,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那里入手去提升,對(duì)此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優(yōu)化、shell腳本、Docker、微服務(wù)、Nginx等多個(gè)知識(shí)點(diǎn)高級(jí)進(jìn)階干貨需要的可以免費(fèi)分享給大家,需要的可以加入我的官方群點(diǎn)擊此處。

總結(jié)

以上是生活随笔為你收集整理的laravel redis_如何将redis优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。