您好,匿名用户
随意问技术百科期待您的加入

如何使用Redis构建复杂数据结构

0 投票

最近在做一个测试回归的系统,Server这边需要在每个Test执行的时候为它保留相关的数据,待测试结束后,删掉这些数据。

也就是这个数据只是临时的,一般一次测试用例大概就几分种,因此单挑数据的存在时间非常短。所以想要选用Redis做数据存储。

之前没有使用Key-Value数据存储的经验,我这边简单构想的单挑数据结构如下:

{
    sessionId: 123454,
    gloablData: {}, // 在全局维持的数据
    testWins: [
        { winId: 123, parentWinId: 123, stats: 'running', testResult: {}
        }
    ]
}

其中testWinds为测试用所有可能会出现的窗口(窗口其实为浏览器窗口,这个可以无视),然后会为每个窗口记录信息,然后每个窗口有自己的子测试结果testResult,是一个复杂数据(但是可以用JSON字符串来储存,因为Server对它的具体内容不关心,输出给需要的接口就行了),globalData也一样,server不关心,设置成JSON字符串

但是查看Redis文档,发现Redis貌似无法构建这么复杂的数据结构。

因此针对这样的需求,该如何设置这个数据库的结构?

我这边的简单设置是这样的:

对于每次测试:

有一条储存globalData:

session_id:globalData

和多条储存testWin数据:

session_id:testWind_id

其中globalData由于我这边的Server不关心也不会做查询,因此只保存JSON字符串,testResult也一样,这样的话,貌似其实就两种类型:

session_id:testWind_id: { winId: 123, parentWindId: 123, stat: 'running', testResult: JSONString }

session_id:globalData: JSONString
用户头像 提问 2013年 9月11日 @ Annie 上等兵 (299 威望)
分享到:

1个回答

0 投票

存储和使用可以用对象封装。

针对你的情况,我会这么存。

Key : "session:123454:globalData" Value: hash 这里存属性hash. (hget, hset)
Key : "sesison:123454:testWins" Value: list 存储 test wins' ids
Key : "session:123454:testWins:win_id" Value: hash 这里存wins属性hash,也就是你json串的东西。

存储这样,使用还是要用对象封装起来

用户头像 回复 2013年 9月11日 @ Viktor 上等兵 (290 威望)
提一个问题:

相关问题

0 投票
1 回复 74 阅读
+1 投票
1 回复 98 阅读
用户头像 提问 2013年 2月22日 @ Olaf 上等兵 (366 威望)
0 投票
1 回复 55 阅读
用户头像 提问 2012年 12月1日 @ Hades 上等兵 (152 威望)
0 投票
1 回复 27 阅读
用户头像 提问 2014年 1月5日 @ Trish 上等兵 (154 威望)
0 投票
1 回复 48 阅读
用户头像 提问 2012年 12月1日 @ Renekton 上等兵 (260 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...