Redis内置了Lua解释器,可以运行一段lua脚本,完成相对复杂的操作。
实现一个简单的操作:创建一个hash类型的key,并设置过期时间,lua代码如下
local values = {};
for i,v in ipairs(KEYS) do
values[#values+1] = redis.pcall('hmset', v, ARGV[2], ARGV[3], ARGV[4], ARGV[5]);
redis.pcall('expire', v, ARGV[1]);
end
return {KEYS,values};
执行脚本
$ redis-cli --eval ./scripts/hash.lua hash_1 , 100 name maria age 22
1) 1) "hash_1"
2) 1) OK
查看key
127.0.0.1:6379> hgetall hash_1
1) "name"
2) "maria"
3) "age"
4) "22"
127.0.0.1:6379> ttl hash_1
(integer) 88
封装统一API即使用redis内置的lua解释器实现,支持string, hash, list, set, zset 5种数据类型。
目前已封装的api如下:
- create:创建key
- createNotExists: 在key不存在时创建,否则不创建
- createExists: 在key存在时创建,否则不创建
- update: 更新key值,可更改ttl,或保持原ttl
- updateBatch: 批量更新
- insert:插入值,例如向列表或集合插入元素
- insertNotExists:类似createNotExists
- insertExists:类型createExists
- get:获取key值(多个)
- getAndSet: 获取key并设置新的值
- find:获取key值(单个)
- findBatch:批量获取
- destroy:销毁key
- destroyBatch:批量销毁
- delete:删除key(多个)
更多内容见 github