Redis----lua篇

Redis Lua篇

相信大部分redis使用者,至少听过Lua脚本,使用的话,更好了,今天我以个人学习经验交流把我对lua的使用写出来。

首先看一下网上对lua脚本的介绍和使用:
run以上是在菜鸟教程上找到的内容并截图。

教程里并没有具体的写出使用,至少很简单的描述了一个实例。

比如:
怎么设置key?
怎么设置分布式锁?
怎么删除key?

等等
这些,在菜鸟教程里面都没具体描述。所以我写该篇文章,主要是描述在实际的生产中的使用。

lua的简单介绍还是要写一下:

EVAL script numkeys key [key …] arg [arg …]
首先大家一定要知道eval的语法格式,其中:
<1> script: 你的lua脚本
<2> numkeys: key的个数
<3> key: redis中各种数据结构的替代符号
<4> arg: 你的自定义参数
例子:
eval “return {KEYS[1],KEYS[2],KEYS[3],KEYS[4]}” 4 username age jack 20
类似于C#的占位符{0}

通常情况下,不会在redis-cli直接写lua脚本,一般都是放在lua文件中,方便编辑
redis提供了以下几个script命令,用于对于脚本子系统进行控制:
script flush:清除所有的脚本缓存
script load:将脚本装入脚本缓存,不立即运行并返回其校验和
script exists:根据指定脚本校验和,检查脚本是否存在于缓存
script kill:杀死当前正在运行的脚本(防止脚本运行缓存,占用内存)

话不多说,直接上代码(golang版本的代码)

func demo_01()  {
	redis_client := GetRedisConnect()

	/*result:=redis_client.ScriptLoad("return 'Hello GrassInWind'")
	fmt.Println(result.Val())*/
	// c66be1d9b54b3182f8d8e12f8b01a4e5c7c4af5b
	result:=redis_client.EvalSha("c66be1d9b54b3182f8d8e12f8b01a4e5c7c4af5b",nil)
	fmt.Println(result.Val())
}

func demo_02()  {
	redis_client := GetRedisConnect()
	/*result:=redis_client.ScriptLoad("return {KEYS[1],KEYS[2],KEYS[3],KEYS[4]}")
	fmt.Println(result.Val())*/
	//00bd8c0c171fada34c1c511fadf893e57bdb429e
	//4 username age jack 20
	result:=redis_client.EvalSha("00bd8c0c171fada34c1c511fadf893e57bdb429e",[]string{"username","jack","age","20"})
	fmt.Println(result.Val())
}

func demo_03()  {
	redis_client := GetRedisConnect()

	//设置分布式锁
/*	result:=redis_client.ScriptLoad("return red
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值