是这样的,我想根据我设备传回的最后时间判断我自己的一个设备是否在线(DateTime.Now 与 updated_at 相差 5min 以上理解为掉线了)
每当设备有返回信息的时候,我就更新设备本身这条记录,这样就刷新了 updated_at
目前我有几种思路
1、在 after_find 中与 updated_at 进行比较,这样每次查询的时候就能判断出来设备是否在线 优点:简单粗暴 缺点:必须使用 ActiveRecord 查询才会触发,如果是其他程序来查看数据库,则就不能判断了
2、使用 rails.cache.fetch 进行实现 优点:依然很简单,设置缓存过期时间为 5min,当有缓存命中的时候认为在线,缺点:第一次设备有返回时由于没建立缓存,则仍然会显示掉线
3、使用 Redis 进行实现 我觉得跟 rails.cache.fetch 差不多,但我觉得又要去启动一个 redis 似乎很麻烦的说,我设备也不是很多,最多 100 个,应该对效率没太大影响??
4、使用 cron 等技术,10 分钟检查一次,将结果硬性的记录到数据库中?
新手不太清楚,如果问题很傻,还请多多包涵