一起寫redis指令碼

2021-07-03 04:55:04 字數 2226 閱讀 1325

要寫redis的指令碼,首先應該搭建好它的指令碼環境。redis使用lua作為其指令碼語言。所以搭建lua環境成了首要工作。

環境:centos7.0

redis:3.0.2

1.1 安裝lua環境

[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...