redis与lua脚本结合,java基本使用

Lua介绍java

        Lua是一个高效、简洁、轻量级、可扩展的脚本语言,能够很方便的嵌入到其它语言中使git

用,Redis从2.6版支持Lua。redis

使用lua脚本的主要几个好处spring

1:减小网络开销,这个能够极大的提高访问速度数据库

2:原子操做:Redis会把脚本看成一个总体来执行,中间不会插入其它命令apache

3:复用功能缓存

4.能够实现咱们传统数据库里面的‘’存储过程‘’服务器

下面是基本的示例:网络

package org.lanqiao.ssm.common.redis.lua;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import redis.clients.jedis.Jedis;

/**
 * 
 * @Title: RedisTest.java
 * @Package org.lanqiao.ssm.common.redis
 * @Description: TODO(本地jedis 调用lua脚本使用)
 * @author 刘伟 15818570028@163.com
 * @date 2016年10月11日 上午9:29:35
 * @version V1.0
 */
public class RedisLuaTest {
	private static final Log log = LogFactory.getLog(RedisLuaTest.class);

	public static void main(String[] args) {

		Jedis jedis = new Jedis("10.1.10.80", 6379);
		List<String> keys = new ArrayList<>();
		List<String> vals = new ArrayList<>();

		// 测试一 基本测试
		Object eval = jedis.eval("return 1", keys, vals);
		log.info(eval);

		// 测试二 eval  里面也能够是一个文件
		keys.add("kk");
		Object eval2 = jedis.eval("local tab={}  for i=1,#KEYS do  tab[i] = redis.call('get',KEYS[i]) end return tab",
				keys, vals);
		log.info(eval2);

		// 测试三 scriptLoad 
		//好处:这样能够缓存到服务器,不用每次把lua脚本的内容传过去
		String lua = "local tab={}  for i=1,#KEYS do  tab[i] = redis.call('get',KEYS[i]) end return tab";
		String scriptLoad = jedis.scriptLoad(lua);
		log.info(scriptLoad);
		Object evalsha = jedis.evalsha(scriptLoad, keys, vals);
		log.info(evalsha);

	}
}

打印输出以下:测试

 

相应的代码请点击:

代码里有集成客户端分片redis集群和服务端redis集群的实现,并有和spring的相关集成

https://git.oschina.net/liuweixy52222/ssm-common-redis.git

相关文章
相关标签/搜索