zoukankan      html  css  js  c++  java
  • Redis脚本

    Redis脚本

    Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

    redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

    127.0.0.1:6379> eval "return 'hello world'" 0

    "hello world"

    127.0.0.1:6379> eval "return 1+1" 0

    (integer) 2

    127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second

    1) "key1"

    2) "key2"

    3) "first"

    4) "second"

    其中 "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 是被求值的 Lua 脚本,数字 2 指定了键名参数的数量, key1  key2 是键名参数,分别使用 KEYS[1]  KEYS[2] 访问,而最后的 first  second 则是附加参数,可以通过 ARGV[1]  ARGV[2] 访问它们

    通过调用redis.call()函数或者redis.pcall()函数,可以直接在Lua脚本里面执行Redis命令

    127.0.0.1:6379> eval "return redis.call('PING')" 0

    PONG

    127.0.0.1:6379> eval "return redis.call('DBSIZE')" 0

    (integer) 10

    127.0.0.1:6379> set msg "hello world"

    OK

    127.0.0.1:6379> eval "return 'The message is:' .. redis.call('GET',KEYS[1])" 1 msg

    "The message is:hello world"

    redis.call()redis.pcall()的区别,在于被执行的脚本出错时,redis.call()会返回出错脚本的名字以及EVAL命令的错误信息,而redis.pcall()只返回EVAL命令的错误信息

  • 相关阅读:

    bzoj3052: [wc2013]糖果公园
    莫队算法心得
    bzoj1104: [POI2007]洪水pow
    bzoj1102: [POI2007]山峰和山谷Grz
    bzoj1121: [POI2008]激光发射器SZK
    bzoj1113: [Poi2008]海报PLA
    bzoj1103: [POI2007]大都市meg
    bzoj1396: 识别子串
    bzoj3756: Pty的字符串
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11339855.html
Copyright © 2011-2022 走看看