要寫redis的指令碼,首先應該搭建好它的指令碼環境。redis使用lua作為其指令碼語言。所以搭建lua環境成了首要工作。
環境:centos7.01.1 安裝lua環境redis:3.0.2
[root@localhost lua]# curl -r -o
.0.tar.gz
[root@localhost lua]# tar zxf lua-5.3
.0.tar.gz
[root@localhost lua]# cd lua-5.3
.0[root@localhost lua]# make linux
執行到這裡的時候,報了乙個錯,如圖:
說缺少什麼readline。缺少,就去安裝它吧。
1.2 安裝readlin
[root@localhost lua]# yum -y install gcc make ncurses-devel readline-devel
# 執行完以上操作後,繼續以下命令
[root@localhost lua]# make linux
[root@localhost lua]# make install
# 使用lua命令,檢視是否安裝成
[root@localhost lua]# lua
看到如圖所示,則表示安裝成功了。
從經典的hello world開始我們的第乙個redis指令碼吧。
首先在某乙個目錄下建立乙個lua檔案,用於存放指令碼。
2.1 lua指令碼內容
local msg = 'hello, world!';
return msg;
該指令碼就是將hello world賦值給msg,然後返回回來。
2.2 執行這個指令碼
在執行之前,首先確保redis的服務已經開啟。然後使用一下命令進行執行。
redis-cli –eval /root/lua/first.lua命令解釋:–eval告訴redis-cli讀取並執行後面的lua指令碼,後面是存放的lua檔案路徑。
這是一種執行方式,還有另外一種執行方式。
redis-cli eval 「$(cat first.lua)」 0兩種執行方式,都會得到一樣的結果。第二種方式中,相當於再再redis的命令中執行了一條shell指令碼。cat first.lua的意思就是獲取該檔案內容並顯示出來。然後0表示使用了redis的鍵的數字號,該指令碼沒有使用故設定為0。
個人更傾向於第一種執行方式。
3.1 指令碼內容
local link_id = redis.call("incr", keys[1])
redis.call("hset",keys[2],link_id,argv[1])
return link_id
指令碼作用描述:redis通過incr命令將第乙個傳入的key值進行增加1,然後通過hset將第二個傳入的鍵,以及通過incr得到的值作為字段,然後argv的第乙個引數作為值,存入到hashtable中。並且在最後返回存入鍵的字段值。
3.2 執行指令碼。
方式一:
redis-cli –eval /root/lua/second.lua links:counter links:urls ,方式二:
redis-cli eval 「$(cat second.lua)」 2 links:counter links:urls兩種方式,任選一種,然後使用redis的自帶客戶端,可以清晰看到redis中新增加了兩個鍵。
然後通過相關命令,可以檢視其中的值,這裡就不在進行演示了,大家可以自己試驗一下。
跟我一起寫shell補全指令碼(開篇)
如果你是乙個重度shell使用者,一定會關注所用的shell的補全功能。某款shell的補全強弱,也許就是決定你的偏好的第一要素。shell裡面補全的影子無處不在,輸入命令的時候可以有補全,敲打選項的時候可以有補全,選擇檔案的時候可以有補全。有些shell甚至支援通過補全來切換版本控制的分支。由於s...
跟我一起寫 Makefile
概述 什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都為你做了這個工作,但我覺得要作乙個好的和professional的程式設計師,makefile還是要懂。這就好像現在有這麼多的html的編輯器,但如果你想成為乙個專業人士,你還是要了解h...
跟我一起寫 Makefile
概述 什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都為你做了這個工作,但我覺得要作乙個好的和professional的程式設計師,makefile還是要懂。這就好像現在有這麼多的html的編輯器,但如果你想成為乙個專業人士,你還是要了解h...