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

Bamboo的custom操作API

程序员文章站 2022-05-19 17:51:47
...
为了在封装性与灵活性之间做出权衡,Bamboo设计了一套完整的的自定义k-v存储接口,用户在特定情况下,可以方便地使用它们。

先列出API吧,再讲解一下设计和使用。

API method 说明
Model_name:setCustom(key, val, st) 创建一个custom key,将val值写入此key中。val可以为string, list, st只能取nil, 'string', 'list', 'set', 'zset' 中的一个
Model_name:getCustom(key) 获取custom key的所有内容
Model_name:delCustom(key) 删除此custom key
Model_name:updateCustom(key, val) 将val值更新到custom key中去,注意,是覆盖关系
Model_name:removeCustomMember(key, val) 删除custom key中的val元素
Model_name:addCustomMember(key, val) 添加一个member到custom key中去
Model_name:numCustom(key) 测量custom key的值的长度


注意:
1. 虽然说custom支持string, list, set, zset四种存储结构,但每种结构最基本的单元还是一个字符串,在设计的时候要考虑。
2. 尽量不要使用纯数字作为key参数,名字尽量取有意义一点的好。

在内部,custom key是被限制在Model_name下面的。也就是说,不存在独立的custom key,总是需要依附某一个model而存在。比如说,
User模型,使用
User:setCustom('test', 'have a test')
后,在redis中存储的key是 User:custom:test, 值为'have a test'

如果实在找不到要用到的custom key与哪一个模型有关联,就用Model模型吧。
执行
Model:setCustom('test', 'have a test')
后,在redis中存储的key是 Model:custom:test, 值为'have a test'


将custom key限制在某一个模型名字空间下面,是为了防止滥用custom key,尽量少用为好。

custom API可用于记录一些模型相关的属性在数据库中。