掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Redis是一個(gè)開源的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),可用于存儲(chǔ)鍵值對(duì),列表,集合,有序集合,哈希表等多種數(shù)據(jù)結(jié)構(gòu)。它可以用作數(shù)據(jù)庫(kù),緩存,消息隊(duì)列等。由于Redis是內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),因此它的數(shù)據(jù)庫(kù)的速度要快得多。但是,Redis也有一些限制。

其中,Redis無(wú)法在事務(wù)內(nèi)獲取值是一個(gè)重要的限制。事務(wù)提供了一種原子化的操作,能夠保證所有的操作都被成功的執(zhí)行,或者全部不被執(zhí)行,而在事務(wù)環(huán)境下,Redis無(wú)法從其他客戶端查看數(shù)據(jù)庫(kù)中的值。這種情況下,無(wú)論Redis如何設(shè)置,它都會(huì)返回null結(jié)果。
為了解決Redis無(wú)法在事務(wù)內(nèi)獲取值的問題,可以使用 Lua 腳本實(shí)現(xiàn),使用 EVALSHA 命令在事務(wù)內(nèi)執(zhí)行。 比如以下這段代碼:
eval "redis.call('get', KEYS[1])" 1 key
這段代碼的作用是獲取 Redis 中 key 對(duì)應(yīng)的值。使用Redis的 EVALSHA 命令來(lái)調(diào)用命令中定義的Lua腳本。 該Lua腳本可以使用 Redis 內(nèi)置函數(shù) get() 來(lái)獲取key對(duì)應(yīng)的值。該命令使用 1 個(gè)key。 該結(jié)果可以在事務(wù)內(nèi)獲取,從而解決了 Redis 在事務(wù)內(nèi)無(wú)法獲取值的問題。
Redis無(wú)法在事務(wù)內(nèi)獲取值是一個(gè)非常重要的限制,但是可以通過(guò)使用 Lua 腳本,使用 EVALSHA 命令在事務(wù)內(nèi)執(zhí)行,解決 Redis 在事務(wù)內(nèi)無(wú)法獲取值的問題。
成都創(chuàng)新互聯(lián)科技公司主營(yíng):網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊(cè)、網(wǎng)頁(yè)、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開發(fā)于一體。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流