Bamboo的redis封装层API
程序员文章站
2022-05-19 17:51:53
...
先扯一下Bamboo与Redis的关系:Bamboo对redis目前严重依赖,但是无需担心无法使用其它数据库。Redis可以看成是一个中间层,后端使用其它机制来实现数据库的持久化。
Redis的指令虽然已经很好用了,但如果要上层逻辑直接使用,还是很复杂,容易出错。于是,对Redis的封装还是有必要的。在这个封装中,不是简单的redis的指令的包装,还有一些策略性的东西放在里面。
API基本范畴
下面分门别类列出各个存储模型的API
redis/list.lua
redis/zset.lua
redis/set.lua
redis/fifo.lua
redis/zfifo.lua
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这个成员 |
推荐阅读
-
微信小程序网络层封装的实现(promise, 登录锁)
-
用C++封装MySQL的API的教程
-
封装的原生javascript弹出层代码
-
PHP实现基于Redis的MessageQueue队列封装操作示例
-
使用ASP.NET Web Api构建基于REST风格的服务实战系列教程——使用Repository模式构建数据库访问层
-
PHP实现操作redis的封装类完整实例
-
JS中封装axios来管控api的2种方式
-
OSI七层参考模型与TCP/IP五层参考模型、数据的封装、网络服务的讲解
-
ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装
-
利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理