欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Bamboo的redis封装层API

程序员文章站 2022-05-19 17:51:53
...
先扯一下Bamboo与Redis的关系:Bamboo对redis目前严重依赖,但是无需担心无法使用其它数据库。Redis可以看成是一个中间层,后端使用其它机制来实现数据库的持久化。

Redis的指令虽然已经很好用了,但如果要上层逻辑直接使用,还是很复杂,容易出错。于是,对Redis的封装还是有必要的。在这个封装中,不是简单的redis的指令的包装,还有一些策略性的东西放在里面。

API基本范畴

名称 用途
save 创建,批量写入
update 在已经创建的情况下,批量写入
retrieve(及其衍生) 获取所有
del 删除
add(append及衍生) 添加元素
remove(pop) 删除一个元素
num(len) 测量长度
have 测试是否包含


下面分门别类列出各个存储模型的API

redis/list.lua

API method 说明
save(key, tbl) 创建一个redis list, 并传递一个表格参数tbl进来,写入此list中。
update(key, tbl) 将传递进来的tbl的值写入已经存在的key中去。
retrieve(key) 获取此list的所有成员,返回一个lua list
append(key, val) 在list右端添加一个成员
prepend(key, val) 在list左端添加一个成员
pop(key) 删除最右端的成员
remove(key, val) 删除list中的val成员
removeByIndex(key, index) 按索引删除某一个成员
len(key) 测量list长度,返回数值
del(key) 删除此list
have(key, obj) 检测list中是否有obj这个成员


redis/zset.lua

API method 说明
save(key, tbl) 创建一个redis zset, 并传递一个表格参数tbl进来,写入此zset中。
update(key, tbl) 将传递进来的tbl的值写入。
add(key, val) 将val添加到zset中去,如果已经存在,则直接返回nil;不存在,则加进去,score为zset内的累计值
retrieve(key) 获取此zset的所有成员,按score由低到高的顺序,返回一个lua list
retrieveReversely(key) 获取此zset的所有成员,不过顺序是相反的,按score由高到低顺序,返回一个lua list
retrieveWithScores(key) 获取此zset的所有成员,同时获取member值和score值,按score由低到高的顺序,返回一个lua list,每个list成员为{member, score}
retrieveReverselyWithScores(key) 获取此zset的所有成员,同时获取member值和score值,按score由高到低的顺序,返回一个lua list,每个list成员为{member, score}
remove(key, val) 删除此zset中的val成员
removeByScore(key, score) 删除此zset中的score为score的成员
num(key) 测量此zset长度,返回数值
del(key) 删除此zset
have(key, obj) 检测zset中是否有obj这个成员


redis/set.lua

API method 说明
save(key, tbl) 创建一个redis set, 并传递一个表格参数tbl进来,写入此set中。
update(key, tbl) 将传递进来的tbl的值写入。
add(key, val) 将val添加到set中去
retrieve(key) 获取此set的所有成员,返回一个lua list,无固定顺序
remove(key, val) 删除此set中的val成员
removeByScore(key, score) 删除此zset中的score为score的成员
num(key) 测量此set长度,返回数值
del(key) 删除此set
have(key, obj) 检测set中是否有obj这个成员


redis/fifo.lua

API method 说明
save(key, tbl) 没实现,不需要。
update(key, tbl) 没实现,不需要。
retrieve(key) 获取此fifo的所有成员,返回一个lua list
push(key, val) 在list左端添加一个成员,于是最新的成员在左边
pop(key) 删除最右端的成员,最老的成员在右边
remove(key, val) 删除fifo中的val成员
len(key) 测量fifo长度,返回数值
del(key) 删除此fifo
have(key, obj) 检测fifo中是否有obj这个成员


redis/zfifo.lua

API method 说明
save(key, tbl) 没实现,不需要。
update(key, tbl) 没实现,不需要。
retrieve(key) 获取此zfifo的所有成员,返回一个lua list
retrieveWithScores(key) 获取此zfifo的所有成员,同时获取member和score,返回一个lua list,每个list成员为 {member, score}
push(key, val) 在此zfifo中新加入一个成员val。这个新成员的score是在内部递增计算出来的,始终保持新加入的成员分值最大
pop(key) 删除最老的成员
remove(key, val) 删除此zfifo中的val成员
removeByScore(key, score) 删除此zfifo中的score为score的成员
len(key) 测量此zfifo长度,返回数值
del(key) 删除此zfifo
have(key, obj) 检测此zfifo中是否有obj这个成员