asp.net-core - 如何设置具有不同子项到期时间的列表?
问题描述
现在我需要做一个IP黑名单需求。
当管理员将该IP地址加入IP黑名单后,该IP在2小时内无法访问网站。
在我看来,我会使用一个 ImemoryCache 并设置一个过期时间来存储它。同时,ImemoryCache的一个key只能存储一个对象并设置一个过期时间,而这里可能有很多IP地址。
如何设置具有不同子项到期时间的列表?谢谢你。
解决方案
如何设置具有不同子项到期时间的列表?
如果您使用一键缓存 IP 列表,则无法为子节点设置不同的过期时间。
对于解决方法,您可以尝试缓存独立的 ip,如下所示:
public IActionResult CreateCache()
{
string ip = "xx.xx";
using (var entry = _memoryCache.CreateEntry(ip))
{
entry.SlidingExpiration = TimeSpan.FromHours(2);
}
return Ok();
}
public IActionResult CheckCache()
{
string ip = "xx.xx";
var exist = _memoryCache.TryGetValue(ip, out string value);
return Ok();
}
推荐阅读
- bash - bash脚本:意外标记“完成”附近的语法错误
- linux - Shell 脚本 - 在不同的 bash 会话中并行运行 shell 命令
- webpack - 如何通过 webpack 让中间人使用自定义字体和 font-awesome?
- php - 如何在超过 1 周时隐藏数据,我使用 codeigniter
- javascript - 如何从 TypeORM 属性装饰器中获取值
- reactjs - 如何让 BootstrapTable 用更新的数据重绘?
- angular - Angular - 使用 ComponentFactoryResolver 动态生成多个新组件并需要动态更改值
- java - 在普通数组中分组值并移动到多维数组
- azure - 将 Web 服务迁移到 Azure
- react-native - react native 中的快速刷新总是完全重新加载应用程序