redis lua脚本使用

lua脚本很简单:

 local current = redis.call('GET', KEYS[2])
 if current == ARGV[2]
   then redis.call('SET', KEYS[1], ARGV[1])
   return true
 end

 return false

下面是java代码:

 public static void main(String[] args) {
    //
      ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application-redis.xml");
      final RedisTemplate<String,String> redisTemplate = applicationContext.
              getBean("redisTemplate",RedisTemplate.class);

     
      DefaultRedisScript<Boolean> script=new DefaultRedisScript<>();
     
      ClassPathResource resource=new ClassPathResource("test11.lua");
      
      script.setScriptSource(new ResourceScriptSource(resource));
     
      script.setResultType(Boolean.class);

      List<String> keys=new ArrayList();

      keys.add("k10");

      keys.add("k11");


      Boolean result=redisTemplate.execute(script,keys,new String[]{"lala","lala"});

      System.out.println(result);
  }

redis中数据的存储:
图片描述

为什么老是返回false????

阅读 6.3k
1 个回答
新手上路,请多包涵

redis里面value的值需要加上""

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题