redis --- lua 腳本實現原子操作


如題, 樓主的想法很簡單, lua 腳本本身支持原子性, 所以把命令寫進一個腳本就行, 當然后續還會優化才能放到生產上,例如緩存腳本 ,redis 本身會緩存執行過的腳本 ,這樣速度更快, 再優化, 有個專門的redis 來放 緩存的腳本,總之性能優化是多種多樣的,滿足了業務上的性能需求就好 ,今天先貼個最low 的demo 

redis-cli 命令行

EVAL " local mrest=redis.call('set',KEYS[1],ARGV[1]);redis.call('expire',KEYS[1],ARGV[2]);return mrest;"  1   "rsz"  "zhaoruizhi"  1000

也很好理解這段腳本 ,設置一個值,並設置它的生存時間,這只是個demo ,可能沒有什么意義,但是 ,你可以用其他的命令組和,實現一些復雜的有意義的操作哈,

再來看一個帶條件判斷的 eval "local a=10;if a==10 then return  KEYS[1]   ; else return ARRGV[1] end  "  1 "sssd" "fdfdfd"

返回   "sssd"

我們可以記一下lua的if else 語句   

 

if a==10 then .....;else ...... end   //分支語句 。lua 不支持switch 語句,所有分支的話就用 if else實現吧 。 優化后續再記。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM