`
daogangtang
  • 浏览: 62935 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Bamboo的redis封装层API

 
阅读更多
先扯一下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这个成员





分享到:
评论

相关推荐

    Redis封装动态库

    这一步是封装的关键,目的是让开发者能够通过调用简洁明了的API来与Redis进行交互。 2. C++类设计:通常会创建一个RedisClient类,包含连接管理、命令发送和响应处理等功能。这个类应该包含构造函数来建立连接,以及...

    php操作redis封装的类

    一个php操作redis封装的类,Redis 操作,支持 Master/Slave 的负载集群,服务器连接句柄,连接服务器,注意:这里使用长连接,提高效率,但不会自动关闭,得到 Redis 原始对象可以有更多的操作,条件形式设置缓存,...

    Asp.net 封装Redis帮助类

    "Asp.net 封装Redis帮助类"的主题涉及了如何在Asp.net应用程序中有效地利用Redis进行数据缓存。下面我们将详细探讨这个主题。 首先,`StackExchange.Redis.dll`是.NET平台上的一个流行的Redis客户端库,它提供了一...

    基于C#的NewLife.Redis高性能Redis协议封装设计源码

    本项目是基于C#的NewLife.Redis高性能Redis协议封装设计源码,包含119个文件,其中包括95个C#源文件、6个csproj文件、3个YAML文件、2个PNG图片文件、2个pubxml文件、1个Editorconfig文件、1个gitignore文件、1个eddx...

    php操作redis封装的类.zip

    一个php操作redis封装的类,Redis 操作,支持 Master/Slave 的负载集群,服务器连接句柄,连接服务器,注意:这里使用长连接,提高效率,但不会自动关闭,得到 Redis 原始对象可以有更多的操作,条件形式设置缓存,...

    基于 hiredis c++调用redis 封装

    封装这些基本操作到C++类中,可以提供更友好的API。例如,创建一个`RedisClient`类,其中包含`connect`、`set`、`get`等方法: ```cpp class RedisClient { public: RedisClient(const std::string& host, int ...

    RedisDB封装库

    RedisDB封装库是一种为了简化对Redis数据库操作而创建的库,它基于StackExchange.Redis这个流行的.NET客户端。StackExchange.Redis是一个高效、全面的Redis客户端,支持多种数据类型和操作,为.NET开发者提供了方便...

    c#Redis封装类库操作.txt

    C# StackExchange.Redis 操作封装类库,包括Redis五大数据结构(String,Hash,List,Set,ZSet)的各种用法、单元测试实例。

    redis封装类

    java项目使用redis封装一些方法和一些初始化数据,如初始化连接池等

    封装StackExchange.Redis

    由于ServiceStack.Redis已经收费,所以开始转向StackExchange.Redis使用,这里不讨论性能,只是封装其使用;网上有一位网友的封装我很喜欢,逐步修改了下。把redis几种存储的操作分别封装在一个类中;分别增加了单例...

    StackExchange.redis 封装帮助类(支持批量)

    StackExchange.redis 封装帮助类(支持批量)

    redis简单封装

    在实际开发中,直接使用Redis命令进行操作往往不够灵活且易出错,因此通常会对其进行简单的封装,以提供更友好的API接口,提高代码的可读性和可维护性。封装可以包括连接池管理、事务处理、异常处理、命令参数校验等...

    C++基于redis的分布式锁redisAPI

    本文将深入探讨如何使用C++结合Redis实现分布式锁,并详细讲解Redis API在C++中的应用,以及如何处理与Boost库的集成。 首先,Redis是一个高性能的键值存储数据库,广泛用于缓存、消息队列、分布式锁等场景。分布式...

    将 Redis 与 FastAPI 结合使用.zip

    将 Redis 与 FastAPI 结合使用FastAPI Redis 示例这是一个示例 API,演示了如何使用 Redis 和 FastAPI 在 Python 中构建完全异步的 Web 服务。该 API 名为IsBitcoinLit。美国以外的读者如果对俚语“lit”不熟悉,...

    Redis API帮助文档(中文版)

    Redis API帮助文档(中文版)提供了全面的关于Redis操作命令的中文解释,是开发者学习和使用Redis的重要参考资料。Redis是一款高性能的键值存储系统,常用于数据库、缓存和消息中间件等场景。其API包括了丰富的数据...

    redis c++封装.zip

    在C++中对Redis进行封装,可以方便地在C++程序中利用Redis的功能,提高开发效率。以下是一些关于“Redis C++封装”的核心知识点: 1. **Redis数据结构**:Redis支持多种数据结构,如字符串(String)、哈希表(Hash...

    Redis,redis封装核心方法

    Redis常用方法封装核心类;对象序列化和反序列化;RedisSession 用于微信分部署session操作;Redis数据源操作接口;商品Redis 存储查询 针对redis缓存技术进行了封装,对象类型存贮封装了序列化,redis穿透的处理。

    spring-data-redis-2.5.5-API文档-中文版.zip

    包含翻译后的API文档:spring-data-redis-2.5.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.data:spring-data-redis:2.5.5; 标签:springframework、data、spring、redis、中文文档、jar...

    redis网络层echo例子

    在Redis中,每个客户端连接都会被封装为一个`aeEventLoop`结构,其中包含了处理I/O事件的回调函数。当客户端发送数据到服务器时,这些数据会被放入一个输入缓冲区;当服务器需要向客户端发送数据时,数据则会被放入...

Global site tag (gtag.js) - Google Analytics