让redis操作更简单:为不同数据类型封装统一的命令

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

你可能感兴趣的:(让redis操作更简单:为不同数据类型封装统一的命令)