zoukankan      html  css  js  c++  java
  • redis~lua脚本的使用

    通过lua脚本来运行redis命令主要体现在批量执行和跨语言方面,我们可以通过redis.call()函数来执行lua脚本,下面介绍几个lua里的参数

    eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
    
    1. eval代表执行Lua语言的命令。
    2. lua-script代表Lua语言脚本。
    3. key-num表示参数中有多少个key,需要注意的是Redis中key是从1开始的,如果没有key的参数,那么写0。
    4. [key1 key2 key3…]是key作为参数传递给Lua语言,也可以不填,但是需要和key-num的个数对应起来。
    5. [value1 value2 value3 …]这些参数传递给Lua语言,他们是可填可不填的。

    实例

    在redis里添加一个foo,值是lind

     eval "return redis.call('set',KEYS[1],ARGV[1])" 1  foo value 
    

    下面这个实例是实现分布锁的lua脚本

    local lockClientId = redis.call('GET', KEYS[1])
    " +
    					"if lockClientId == ARGV[1] then
    " +
    					"  redis.call('PEXPIRE', KEYS[1], ARGV[2])
    " +
    					"  return true
    " +
    					"elseif not lockClientId then
    " +
    					"  redis.call('SET', KEYS[1], ARGV[1], 'PX', ARGV[2])
    " +
    					"  return true
    " +
    					"end
    " +
    					"return false"
    

    这个脚本与开发语言没有关系。

  • 相关阅读:
    第二次冲刺周期站立会议(3)
    第二次冲刺周期站立会议(2)
    第二次冲刺周期站立会议(1)
    测试计划
    对各组第一次冲刺周期的评价
    团队绩效评估计划
    学校网站UI设计分析
    站立会议(10)
    Bower和Gulp集成前端资源
    Laravel的学习网站推荐
  • 原文地址:https://www.cnblogs.com/lori/p/13535539.html
Copyright © 2011-2022 走看看