首页 > 解决方案 > 如何设置具有不同子项到期时间的列表?

问题描述

现在我需要做一个IP黑名单需求。

当管理员将该IP地址加入IP黑名单后,该IP在2小时内无法访问网站。

在我看来,我会使用一个 ImemoryCache 并设置一个过期时间来存储它。同时,ImemoryCache的一个key只能存储一个对象并设置一个过期时间,而这里可能有很多IP地址。

如何设置具有不同子项到期时间的列表?谢谢你。

标签: asp.net-core.net-core

解决方案


如何设置具有不同子项到期时间的列表?

如果您使用一键缓存 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();
    }

推荐阅读