database - 存储 UpdatedAt 或 ExpireAt 时间戳以通过超时限制更新是正确的
问题描述
我需要实现功能来存储一些值,并限制每周更新一次。我通过以下方式实现:
class Example
{
//Stored in db
public int _value;
//Stored in db
public DateTime _updatedAt;
//Stored in db
public DateTime _canUpdateAfter;
//Constant in code
public TimeSpan _updateTimeout = TimeSpan.FromMinutes(1);
public void StoreValue1(int value)
{
if (DateTime.Now - _updatedAt < _updateTimeout)
{
return;
}
_value = value;
_updatedAt = DateTime.Now;
}
public void StoreValue2(int value)
{
if (_canUpdateAfter > DateTime.Now)
{
return;
}
_value = value;
_canUpdateAfter = DateTime.Now + _updateTimeout;
}
}
我有两种实现方式:
- 将更新的时间存储在 db 中并计算超时是否在 .net 代码中传递。
- 当超时到期时将值存储在 db 中,并将其与 .net 代码中的当前值进行比较。
使用哪个,为什么?
解决方案
两种解决方案都是有效的。
方式之间的唯一区别是决定设置下一次更新可能性的时间。
使用解决方案 1,您每次都在代码评估上做出决定,而其他人则强制决定过去。
我更喜欢解决方案1;更灵活,更可持续。
请记住您的业务更改更新频率的情况。使用解决方案 1 有足够的新代码部署或更改假设配置表的一行,而使用解决方案 2 您将需要更新表的所有行。
推荐阅读
- excel - 无法设置 PivotItem 类的 Visible 属性
- app-store - 错误 ITMS-90164:“com.apple.developer.ubiquity-kvstore-identifier”密钥的代码签名权利无效
- php - 如何在视图中分离 RepeatedType 小部件?
- ionic-framework - 关闭浏览器后 ionic InAppBrowser 请求未经授权
- swift - SCNNode SCNAction.move(to:) 未运行但被调用 - Swift
- amazon-web-services - 如何为域和子域安装 SSL 证书
- celery - Django/Celery:max_retries 用于重试,但打印值始终是 Celery 默认值 (3)
- python - 如何使用熊猫更改转置数据框的布局
- java - Gradle bootrun 使用 openjdk 11 失败
- java - 由于 Kotlin 中未解析的引用,无法设置文本或可绘制对象