擅长:python、mysql、java
<p>你提到的问题很大程度上取决于时间。在这种情况下,明智的做法是使用排序集。您可以使用日期时间戳作为每个条目的分数。</p>
<p>例如,可以执行以下操作:</p>
<pre><code>hmset usage:1 created 20100521 quantity 9 resource 1033 user 1842
hmset usage:2 created 20100812 quantity 3 resource 7233 user 1842
hmset usage:3 created 20100927 quantity 4 resource 1031 user 76
zadd usage 20200521 1
zadd usage 20100812 2
zadd usage 20100927 3
</code></pre>
<p>要检索所有内容:</p>
<pre><code>sort usage get
# get usage:*->created get usage:*->quantity get usage:*->resource get usage:*->user
</code></pre>
<p>或者</p>
<pre><code>lrange usage 0 -1
</code></pre>
<p>要获取范围的索引:</p>
<pre><code>zrangebyscore usage 20100800 20100900
</code></pre>
<p>对于基于散列键值的查询,redis还有一个有用的附加功能,允许使用lua编写的脚本。您可以很容易地在python heredoc中编写一个简单的lua脚本,并使用redis.eval方法将该脚本传递给redis。脚本可以是一个循环,根据您要查找的值进行筛选。</p>