關於Laravel中的Redis如何使用Lua的一點記錄

milksoul發表於2020-11-13

查詢關於Redis資料的時候,發現了一篇關於Redis使用Lua指令碼的文章:
Redis使用Lua指令碼
但是要如何在Laravel實現相關操作卻沒有找到資料,於是自己動手摸索,在閱讀了相關程式碼
PhpRedisConnection
最後使用如下程式碼實現:

//返回指令碼的sha校驗和
$sha_key = Redis::executeRaw(['script', 'load','return "Hello world"']);
//傳入sha校驗和,及key的個數(這裡沒有傳入引數)
echo Redis::evalsha($sha_key, 0); //列印出Hello world

傳入k-v引數的程式碼如下:

//返回指令碼的sha校驗和
$sha_key = Redis::executeRaw(['script', 'load','return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}']);
//呼叫
$result = Redis::evalsha($sha_key, 2, 'k1', 'k2', 'v1', 'v2'); //返回['k1','k2','v1','v2']

最後,如果要清空所有指令碼的sha校驗值,則如下:

Redis::executeRaw(['script', 'flush']);

暫時沒想到什麼應用場景,先做個記錄吧

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章