我在这里使用PHP在Redis中保存数据。我有一个Cron随着时间的推移获得一些数据。这个Cron将每5分钟运行一次。在这里,我使用hSet
来存储数据。
$datetime = date("H.i");
$redisforhttp2->hSet(MACHINE.':count',$datetime,$count);
所以我会得到这样的数据
[
"13.25": "64",
"14.50": "96",
"14.52": "65",
"14.54": "39",
"14.55": "48",
"14.56": "68",
"15.03": "66",
"15.05": "61",
"15.07": "60",
"15.10": "41",
"15.11": "72",
"15.14": "53"
]
两天或几天后,它将拥有大量数据。所以我想在48小时后从redis中删除数据。
if(strtotime($dateFromDatabase." + 48 hours") <= strtotime("now"))
{
//Deleting data from Redis.
}
所以我认为hDel
对此有好处。但是在这里,hashKey是动态的(时间)。对于这种情况,哪个是强大的解决方案?请建议我。
更新
此$datetime
用于创建动态图表。
这里的计数是HTTP count
。
答案 0 :(得分:1)
要实现这一点,您需要对数据结构进行一些妥协。而不是具有相同的哈希名称创建从date开始的动态哈希。例如2016-05-21_MACHINE。&#39;:count&#39;将是你今天的关键,明天将是2016-05-22_MACHINE。&#39;:count&#39;。您可以每天运行一个crontab来删除旧的哈希值。
如果您认为在删除之前会产生太多数据,请尝试类似这样的时间戳/(1000 * 60 * 60),无论日期如何,都会给您一个唯一的小时值。用钥匙贴上它。并且每小时运行一次crontab,这将删除超过48小时的哈希值。
此外,您还需要处理hget和hgetall所在的区域。