我们的移动应用程序跟踪用户历史记录(使用动作和日期预定义历史事件)
每一个报告用户历史记录的移动设备都可以检索它。
我想使用Redis上的最新历史记录(比如100条记录)进行快速检索,并在100条记录之后将旧数据移动到某些数据源。
从你的经历中得出的其他想法?谢谢。
发布于 2015-12-15 15:14:02
是的,红宝石是短期历史行为的最佳选择。列表在这方面的数据结构很好看:
此外,您还可以使用某种cron作业来获取旧数据并将其插入到SQL类数据库中。使用获取日志尾:
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变量是用户查询的总记录):
ret = redis.call('LRANGE', 'myKey', 0, require)
require = require - length(ret)
if (require > 0) {
ret += db.query('SELECT ... LIMIT ' + require)
}https://stackoverflow.com/questions/34292646
复制相似问题