Spring Data Redis(Redis Scripting)
来源:互联网 发布:电脑起床闹钟软件 编辑:程序博客网 时间:2024/05/22 04:26
Redis Scripting
Redis脚本
Redis 2.6或更高版本通过eval 和evalsha 命令来支持Lua 脚本的执行。Spring Data Redis 对脚本执行提供了一个高级的抽象封装,处理序列化和自动使用Redis 脚本缓存。
使用RedisTemplate 的execute 方法来运行脚本。RedisTemplate 使用一个可配置的ScriptExecutor 来执行提供的脚本。默认情况下,ScriptExecutor 关注的是:序列化键和参数、反序列化脚本结果。做这些事情还需要RedisTemplate 提供的key和value的序列化器。还提供了另外一个execute 方法,该方法通过传递一个参数来为脚本参数和结果自定义化序列化器。
默认的ScriptExecutor 可以通过以下方式来优化性能:检索脚本的SHA1,尝试先执行evalsha;如果Redis 脚本缓存中没有该脚本则返回来执行eval。
下面示例展示,通过使用Lua 脚本来执行通常的“check-and-set”方案。这是一个完美的Redis 脚本使用方式:自动执行一组命令,一个命令的结果会影响另一个命令的行为。
@Beanpublic RedisScript<Boolean> script() { DefaultRedisScript<Boolean> redisScript = new DefaultRedisScript<Boolean>(); redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("META-INF/scripts/checkandset.lua"))); redisScript.setResultType(Boolean.class);}
public class Example { @Autowired RedisScript<Boolean> script; public boolean checkAndSet(String expectedValue, String newValue) { return redisTemplate.execute(script, Collections.singletonList("key"), expectedValue, newValue); }}
-- checkandset.lua local current = redis.call('GET', KEYS[1]) if current == ARGV[1] then redis.call('SET', KEYS[1], ARGV[2]) return true end return false
上面的XML 配置了一个指向checkandset.lua 文件的DefaultRedisScript,并期望返回一个boolean 类型的值。脚本的返回类型应该是这些中的一个:Long、Boolean、List 或反序列化值的类型,它也可以是null 如果脚本返回a throw-away status (i.e “OK”)。建议在你的应用上下文中配置一个DefaultRedisScript 的单例,避免在每个脚本执行的时候重复创建脚本的SHA1.
上面checkAndSet 方法执行的scripts,可以在SessionCallback 中执行,作为一个事务或管道的一部分。查看Redis 事务和管道章节可以获得更多的信息。
Spring Data Redis 提供了脚本处理的支持,使用Spring Task和Scheduler 抽象封装,来安排计划Redis 脚本定期执行。要获取更多的信息请查看Spring 框架的文档。
- Spring Data Redis(Redis Scripting)
- redis:spring-data-redis
- redis Jredis spring-data-redis
- spring data redis 操作redis
- Spring Data Redis (Redis Support)
- Spring Data Redis(Redis Transactions)
- Spring Data Redis(Redis Cluster)
- Spring Data Redis(Redis Repositories)
- spring data redis 操作redis
- java+redis;spring-data-redis+redis
- SPRING DATA - REDIS配置
- spring data redis试用
- SPRING DATA - REDIS配置
- SPRING DATA - REDIS配置
- Spring-Data-Redis特性
- Spring Data Redis
- spring-data-redis 使用
- spring-data集成redis
- blender里一些不认识的英语单词
- 国王的魔镜
- Linux安装sublime
- 配置JDK
- MeritMS与Bentley Project Wise对比校审流程
- Spring Data Redis(Redis Scripting)
- 浙工大姗姗杯round3 A
- 第二篇python基本语法
- 欢迎使用CSDN-markdown编辑器
- RabbitMQ笔记
- PX4在ROS-Kinetic外部控制下的仿真(1)
- CSS几种常用水平垂直居中的方法
- 使用GraphEdit显示摄像头
- 二维数组