当前位置: 首页 > news >正文

Redis实践之缓存:设置缓存过期策略

简介

DistributedCacheEntryOptions 是用于配置缓存项的过期策略和其他选项的类。在使用 IDistributedCache 接口时,可以通过这个类来设置缓存项的过期时间、滑动过期时间等。

以下是 DistributedCacheEntryOptions 类的主要属性及其说明:

属性

  1. AbsoluteExpiration:

    • 类型:DateTimeOffset?
    • 说明:设置缓存项的绝对过期时间。即缓存项将在指定的日期和时间后过期并被移除。
    • 示例:
      var options = new DistributedCacheEntryOptions
      {AbsoluteExpiration = DateTimeOffset.UtcNow.AddHours(1)
      };
  2. AbsoluteExpirationRelativeToNow:

    • 类型:TimeSpan?
    • 说明:设置相对于当前时间的绝对过期时间。即缓存项将在从现在开始经过指定的时间后过期并被移除。
    • 示例:
      var options = new DistributedCacheEntryOptions
      {AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30)
      };
  3. SlidingExpiration:

    • 类型:TimeSpan?
    • 说明:设置缓存项的滑动过期时间。即如果在指定的时间段内没有访问缓存项,则该缓存项将过期并被移除。如果在滑动过期时间内访问了缓存项,则过期时间会重新计算。
    • 示例:
      var options = new DistributedCacheEntryOptions
      {SlidingExpiration = TimeSpan.FromMinutes(10)
      };

使用示例

以下是一个使用 DistributedCacheEntryOptions 设置缓存项过期时间的完整示例:

using Microsoft.Extensions.Caching.Distributed;
using System;
using System.Text;
using System.Threading.Tasks;public class CacheService
{private readonly IDistributedCache _cache;public CacheService(IDistributedCache cache){_cache = cache;}public async Task SetCacheItemAsync(string key, string value){var options = new DistributedCacheEntryOptions{AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30), // 缓存项将在30分钟后过期SlidingExpiration = TimeSpan.FromMinutes(10) // 如果10分钟内没有访问缓存项,则该缓存项将过期};await _cache.SetStringAsync(key, value, options);}public async Task<string> GetCacheItemAsync(string key){return await _cache.GetStringAsync(key);}
}

在上面的示例中,我们创建了一个 CacheService 类,并在其中使用 DistributedCacheEntryOptions 来设置缓存项的过期策略。我们同时设置了绝对过期时间(相对于当前时间)和滑动过期时间。

注意事项

  • 绝对过期时间 和 滑动过期时间 可以同时设置,但要注意它们的组合效果。滑动过期时间会在每次访问缓存项时重置,而绝对过期时间则是一个固定的时间点。
  • 如果只设置了滑动过期时间而没有设置绝对过期时间,缓存项将一直存在,只要它在滑动过期时间内被访问。
  • 如果同时设置了 AbsoluteExpiration 和 AbsoluteExpirationRelativeToNow,则以最早的时间为准。
  • 过期策略:如果同时设置了 AbsoluteExpiration 和 SlidingExpiration,则缓存项将在最早的时间点过期。例如,如果 AbsoluteExpiration 设置为1小时,而 SlidingExpiration 设置为10分钟,则缓存项将在1小时后过期,或者如果在10分钟内没有访问缓存项,它也会过期。

        通过合理地设置这些选项,可以有效地管理缓存项的生命周期,提高应用程序的性能和资源利用率。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • web基础+http协议+httpd详细配置
  • docker中图形化界面的转发
  • 大模型技术新手指南:从零开始的全方位教程
  • 二叉树算法
  • Vivado FIR IP 详解 (一)
  • 初始c++:入门基础(完结)
  • 【Mac】系统环境配置
  • 【算法】栈与模拟
  • Vue.js 与后端配合:打造强大的现代 Web 应用
  • 视频格式转为mp4(使用ffmpeg)
  • PCIe扫盲(10)
  • 【vue3】vue3.5
  • Linux vi常用命令
  • Android Tools | 如何使用Draw.io助力Android开发:从UI设计到流程优化
  • 前端项目代码开发规范及工具配置
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • DOM的那些事
  • flutter的key在widget list的作用以及必要性
  • JavaScript的使用你知道几种?(上)
  • JAVA并发编程--1.基础概念
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux gpio口使用方法
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Octave 入门
  • Python十分钟制作属于你自己的个性logo
  • 入手阿里云新服务器的部署NODE
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 小程序测试方案初探
  • python最赚钱的4个方向,你最心动的是哪个?
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​520就是要宠粉,你的心头书我买单
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #NOIP 2014# day.1 T2 联合权值
  • (0)Nginx 功能特性
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (二)c52学习之旅-简单了解单片机
  • (二十三)Flask之高频面试点
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (七)理解angular中的module和injector,即依赖注入
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十八)SpringBoot之发送QQ邮件
  • (算法)大数的进制转换
  • (转)mysql使用Navicat 导出和导入数据库
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Micro Framework初体验
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET与java的MVC模式(2):struts2核心工作流程与原理