首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Redis对移动用户历史进行短期和长期跟踪

如何使用Redis对移动用户历史进行短期和长期跟踪
EN

Stack Overflow用户
提问于 2015-12-15 15:09:02
回答 1查看 345关注 0票数 0

我们的移动应用程序跟踪用户历史记录(使用动作和日期预定义历史事件)

每一个报告用户历史记录的移动设备都可以检索它。

我想使用Redis上的最新历史记录(比如100条记录)进行快速检索,并在100条记录之后将旧数据移动到某些数据源。

  1. 你认为Redis对短期历史检索有好处吗?
  2. 您会使用哪个数据源来保存最古老的历史以供检索?

从你的经历中得出的其他想法?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-15 15:14:02

是的,红宝石是短期历史行为的最佳选择。列表在这方面的数据结构很好看:

  1. 快速插入有序数据(卢普 for O(1))
  2. 快速选择(朗格 for O(S+N))
  3. 较低的内存消耗(实际上是Redis中最低的--每个列表项的开销仅为21字节)

此外,您还可以使用某种cron作业来获取旧数据并将其插入到SQL类数据库中。使用获取日志尾:

代码语言:javascript
复制
local ret = {}
while tonumber(redis.call('llen', KEYS[1])) > tonumber(ARGV[1]) do
   table.insert(ret, redis.call('rpop', KEYS[1]))
end
return ret

其中键是列表键,第一个参数是要处理的尾大小。这个LUA脚本原子地切断(并返回)所有日志条目,而不是ARGV1。下一步是简单地通过列表和插入SQL数据库进行预测。

虽然用户希望获得他所有的历史记录(在伪代码中,require变量是用户查询的总记录):

代码语言:javascript
复制
ret = redis.call('LRANGE', 'myKey', 0, require)
require = require - length(ret)
if (require > 0) {
    ret += db.query('SELECT ... LIMIT ' + require)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34292646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档