zoukankan      html  css  js  c++  java
  • node.js怎么调用lua脚本操作redis

    1、首先要知道redis是怎么eval lua 脚本的:

    
      eval "local cap=10 if(redis.call(ARGV[1],KEYS[1])+0 < cap) then return redis.call('INCR',KEYS[1]) end return cap" 1 test get
    

      eval 是命令

      "local cap=10 if(redis.call(ARGV[1],KEYS[1])+0 < cap) then return redis.call('INCR',KEYS[1]) end return cap" 是 脚本

    数字1 是你要跳过几个key名字
    

      test就是这个key名

      get就是参数

      要是要传俩key就是 2 key1 key2 然后就是参数 也可以跟多个

      -----

      你也可以把脚本写好放进redis,比如脚本文件是limit.lua

      在命令行输入

       ./redis-cli SCRIPT LOAD "$(cat limit.lua)"
    

      就会返回一串字符串,类似:c62c79f4ab0135aecfb530082be965d52b6cecc4

      你就可以在redis终端输入 evalsha c62c79f4ab0135aecfb530082be965d52b6cecc4 1 test get 调用这个脚本

      或者在终端调用 ./redis-cli evalsha c62c79f4ab0135aecfb530082be965d52b6cecc4 1 test get 调用

      参数一样

      想要清理这些redis的脚本就 SCRIPT FLUSH 一下就行了

    2、node里调用

    async function (params = '', limit = 10) {
      const result = await redis.eval(fs.readFileSync(path.resolve() + '/service/lua/test.lua', 'utf-8'), 1, test, 'GET',12);
      return result;
    }
     redis.eval(脚本,跳过几个Key,然后参数就行了)
    
  • 相关阅读:
    CSS中文API
    廖雪峰Git教程
    数据操作的几个名词即model、dal、dao、orm和ar 解释
    Jetty
    Git介绍与使用
    c3p0、dbcp、druid三大连接池对比
    (转)JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)
    08 bash特性--shell脚本编程入门
    07 grep命令与正则表达式
    06 I/O重定向与管道符
  • 原文地址:https://www.cnblogs.com/JohannaFeng/p/10443176.html
Copyright © 2011-2022 走看看