Laravel 8 Redis

2021-07-19 11:00 更新

要使用 redis 隊(duì)列驅(qū)動(dòng)程序,需要在 config/database.php 配置文件中配置一個(gè) redis 數(shù)據(jù)庫連接。

Redis 集群

如果你的 Redis 隊(duì)列連接使用一個(gè) Redis 集群,那么你的隊(duì)列名稱就必須包含一個(gè) key hash tag。這是為了確保一個(gè)給定隊(duì)列的所有 Redis 鍵都被放在同一個(gè)哈希插槽:

'redis' => [
    'driver' => 'redis',
    'connection' => 'default',
    'queue' => '{default}',
    'retry_after' => 90,
], 

阻塞

在使用 Redis 隊(duì)列時(shí),您可以使用 block_for 配置選項(xiàng)來指定在遍歷 worker 循環(huán)和重新輪詢 Redis 數(shù)據(jù)庫之前,驅(qū)動(dòng)程序需要等待多長時(shí)間才能使任務(wù)變得可用。

根據(jù)您的隊(duì)列負(fù)載調(diào)整此值要比連續(xù)輪詢 Redis 數(shù)據(jù)庫中的新任務(wù)更加有效。例如,您可以將值設(shè)置為 5,以指示驅(qū)動(dòng)程序在等待任務(wù)變得可用時(shí)應(yīng)該阻塞 5 秒:

'redis' => [
    'driver' => 'redis',
    'connection' => 'default',
    'queue' => 'default',
    'retry_after' => 90,
    'block_for' => 5,
], 

注意:將 block_for 設(shè)置為 0 將導(dǎo)致隊(duì)列 workers 一直阻塞,直到某一個(gè)任務(wù)變得可用。這還能防止在下一個(gè)任務(wù)被處理之前處理諸如 SIGTERM 之類的信號(hào)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)