Redisson lua
Redis支持使用lua脚本来执行原子操作,Redisson中也提供了RScript接口,用于执行lua脚本,并提供了实现类RedissonScript。
1. API举例:
RedissonScript.eval(Mode mode, String luaScript, ReturnType returnType, List keys, Object... values);
在lua脚本中可以用KEYS、ARGV数组(两个数组下标均从1开始)来接收keys和values,需要注意的是value会进行序列化(并不是RScript的ARGV如此,redisson在存储时,都会对value进行序列化)。
2. redisson序列化特性
假设有一个hash结构,key是room,field是roomId,value是Long型的{roomId}。那么通过redisson API写入可以观察到redis中的field和value结构分别如下图所示:
特别强调的是,图中的首尾的双引号字符以及反斜杠,在实际的field和value中并不存在,这只是通过redis cli查询时显示效果。
实际上redis中的field是:
"roomId"
复制代码
value是:
["java.lang.Long",12345