为了在封装性与灵活性之间做出权衡,Bamboo设计了一套完整的的自定义k-v存储接口,用户在特定情况下,可以方便地使用它们。
先列出API吧,再讲解一下设计和使用。
[table]
|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的值的长度|
[/table]
注意:
1. 虽然说custom支持string, list, set, zset四种存储结构,但每种结构最基本的单元还是一个字符串,在设计的时候要考虑。
2. 尽量不要使用纯数字作为key参数,名字尽量取有意义一点的好。
在内部,custom key是被限制在Model_name下面的。也就是说,不存在独立的custom key,总是需要依附某一个model而存在。比如说,
如果实在找不到要用到的custom key与哪一个模型有关联,就用Model模型吧。
将custom key限制在某一个模型名字空间下面,是为了防止滥用custom key,尽量少用为好。
custom API可用于记录一些模型相关的属性在数据库中。
先列出API吧,再讲解一下设计和使用。
[table]
|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的值的长度|
[/table]
注意:
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可用于记录一些模型相关的属性在数据库中。