【发布时间】:2016-06-27 22:38:20
【问题描述】:
我有一张这样的桌子:
// banned
+----+---------+---------------+
| id | user_id | unix_time |
+----+---------+---------------+
| 1 | 32534 | 1467066745524 |
| 2 | 43535 | 1467066745541 |
| 3 | 24352 | 1467066745618 |
| 4 | 88734 | 1467066746093 |
+----+---------+---------------+
实际上我需要在插入时为每一行定义一个过期时间。这在 MySQL 中可能吗? (我听说 Redis 可以,那么 MySQL 呢?)
所以我想要这样的东西:
// banned
+----+---------+---------------+
| id | user_id | unix_time |
+----+---------+---------------+
| 1 | 32534 | 1467066745524 | -- removing this row automatically in 10 min
| 2 | 43535 | 1467066745541 | -- removing this row automatically in 1 hour
| 3 | 24352 | 1467066745618 | -- removing this row automatically 2 day
| 4 | 88734 | 1467066746093 | -- removing this row automatically 8 hours min
+----+---------+---------------+
如您所见,每一行都有任意的生命周期。
【问题讨论】:
-
如果到期时间是每个用户随机的,那么我认为您必须自己插入该数据。只需将到期日期设置为当前日期 + 允许用户存在的秒数/分钟/天数/等。至于删除,我不相信有什么办法可以强制mysql删除记录。如果日期过期,您必须创建一个作业来删除记录。
-
为什么这个过期时间很重要?例如,如果您不希望用户在过期日期之后登录系统,则在身份验证期间检查该日期。
-
此链接可能对您有所帮助stackoverflow.com/questions/11038675/…