程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 一起寫redis腳本

一起寫redis腳本

編輯:DB2教程

一起寫redis腳本


一、redis腳本環境

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

環境:centos7.0
redis:3.0.2

1.1 安裝lua環境

[root@localhost lua]# curl -R -O http://www.lua.org/ftp/lua-5.3.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。缺少,就去安裝它吧。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KCjxwPjEuMiCwstewcmVhZGxpbjwvcD4KCjxwcmUgY2xhc3M9"brush:sql;">[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腳本

從經典的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。
個人更傾向於第一種執行方式。

三、帶參數的redis腳本

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 , http://www.bnersoft.com/

方式二:

redis-cli eval “$(cat second.lua)” 2 links:counter links:urls http://www.bnersoft.com/

兩種方式,任選一種,然後使用redis的自帶客戶端,可以清晰看到redis中新增加了兩個鍵。

[root@localhost lua]# KEYS *

這裡寫圖片描述
然後通過相關命令,可以查看其中的值,這裡就不在進行演示了,大家可以自己試驗一下。

PS:初學redis,不確之處,望指教,也希望本文對大家有一點點幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved