Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在redis中跟踪员工工作时间的方法-什么有用什么是';T_Database_Redis - Fatal编程技术网

Database 在redis中跟踪员工工作时间的方法-什么有用什么是';T

Database 在redis中跟踪员工工作时间的方法-什么有用什么是';T,database,redis,Database,Redis,我正在设置一个简单的打卡、打卡系统,我希望能够跟踪用户何时打卡、何时打卡,以及能够获取日期1和日期2之间工作小时数的报告 我的想法是当他们登录时设置一个排序集,键是他们的名字,分数是他们登录时的时间戳,值将为空。然后,当他们注销时,我会将该值设置为注销时间的时间戳。然后我就可以根据分数得出报告。这是否可行和/或是否有更好的方法替代 编辑(来自评论): 使用排序集,您可以通过获取分数大于开始时间戳的所有记录来执行查询排序 因此,为了便于使用,假设用户登录时间戳为50、100、150和200,您可以

我正在设置一个简单的打卡、打卡系统,我希望能够跟踪用户何时打卡、何时打卡,以及能够获取日期1和日期2之间工作小时数的报告

我的想法是当他们登录时设置一个排序集,键是他们的名字,分数是他们登录时的时间戳,值将为空。然后,当他们注销时,我会将该值设置为注销时间的时间戳。然后我就可以根据分数得出报告。这是否可行和/或是否有更好的方法替代

编辑(来自评论):

使用排序集,您可以通过获取分数大于开始时间戳的所有记录来执行查询排序

因此,为了便于使用,假设用户登录时间戳为50、100、150和200,您可以告诉redis为时间戳大于100的记录提供所有数据,它将返回最后2条记录

它可以在mysql或其他数据库中轻松完成,但我相信它也可以在redis中轻松完成


对我来说,服务器资源是至关重要的,因此在mysql上使用redis是一个很大的优势。

你当然可以记录打卡时间。但你不能在小时内拉一份报告。您必须在客户端代码中计算这些值,方法是提取最后一次登录和最后一次注销并进行计算。当然还有处理错过登录或注销的案例


您不需要从Redis“提取报告”,而是存储和检索数据。存储数据的方法有很多,但你的问题太广泛了

在redis中:不可以。您不能查询redis,您只能获取密钥。还有其他数据库更适合这个问题。无意冒犯,但这不是真正的问题。使用排序集,您可以通过获取分数大于开始时间戳的所有记录来执行查询排序。因此,为了便于使用,假设用户登录时间戳为50、100、150和200,您可以告诉redis为时间戳大于100的记录提供所有数据,它将返回最后2条记录。我可以在mysql或其他数据库中轻松完成,但我相信在redis中也可以轻松完成。对于我来说,服务器资源是至关重要的,所以在mysql上使用redis对我来说是一个很大的优势。