java使用lua 脚本操作redis 快速入门

1、添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2. 编写Lua脚本

local jobs_key_ht = KEYS[1];
local bucket_key_zset = KEYS[2];
local topic_id = ARGV[1];
local content = ARGV[2];
local score = ARGV[3];

--  HSET KEY_NAME FIELD VALUE
redis.call(HSET,jobs_key_ht,topic_id,content) ;

-- ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN
redis.call(ZADD,bucket_key_zset,score,topic_id) ;

3、编写代码执行lua脚本

DefaultRedisScript redisScript = new DefaultRedisScript<>();
redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/xxx.lua")));
Boolean flag = redisTemplate.execute(redisScript, keys, RedisKeyUtil.getTopicId(arg), arg, runTimeMillis);
// 执行会返回true 或者false

Redis 使用lua的好处

1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。

2.原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。

3.复用:客户端发送的脚本会永久存储在Redis中,意味着其他客户端可以复用这一脚本而不需要使用代码完成同样的逻辑。
经验分享 程序员 微信小程序 职场和发展