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

C# 结合Redis Cache 访问MySQL数据库

简介:

该代码实现了一个异步方法GetLocalTimersByDeviceIdAsync,用于根据设备ID获取本地定时器。

方法首先检查系统配置是否启用缓存功能,若未启用则直接从数据库查询。
若启用缓存,则优先从Redis缓存获取数据,若缓存未命中则查询数据库并将结果缓存:有效数据缓存1天,空数据缓存5分钟。

查询数据库时使用EF Core进行条件筛选并映射到LocalTimer实体类。

代码

 public static async Task<List<LocalTimer>?> GetLocalTimersByDeviceIdAsync(string deviceId){// 定义一个从数据库中获取数据的方法async Task<List<LocalTimer>?> GetDataFromDB(){return await DbExecuter.ExecuteAsync(async db =>{return await db.LocalTimers.Where(d => d.DeviceId == deviceId).Select(d => new LocalTimer{LocalTimerId = d.LocalTimerId,DeviceId = d.DeviceId,UserId = d.UserId,TimerIndex = d.TimerIndex,Description = d.Description,Enabled = d.Enabled,ExecuteTime = d.ExecuteTime,IsTurnOn = d.IsTurnOn,Frequency = d.Frequency,WeeklyCustom = d.WeeklyCustom,CreatedAt = d.CreatedAt,UpdatedAt = d.UpdatedAt}).ToListAsync();});}
// 检查系统配置,是否优先从缓存中取数据if (DbCache.IsFunctionCached() == false){//直接都数据库return await GetDataFromDB();}
// 从缓存中取数据return await RedisExecutor.ExecuteAsync(async redis =>{var cacheKey = Key_LocalTimers_By_DeviceId + deviceId;var value = await redis.GetAsync<List<LocalTimer>>(cacheKey);// 缓存中没有,都数据库,并添加缓存if (value == null || value.Count == 0){value = await GetDataFromDB();await redis.SetAsync(cacheKey,(value != null && value.Count > 0) ? value : null,(value != null && value.Count > 0) ? TimeSpan.FromDays(1) : TimeSpan.FromMinutes(5));}return value;});}
http://www.dtcms.com/a/532667.html

相关文章:

  • 深圳做网上商城网站手机网站广告代码
  • 自己公司内网网站和外网怎么做同步手机触屏版网站开发
  • 2025年渗透测试面试题总结-218(题目+回答)
  • 伍佰亿门户网站莱芜翰林名苑莱芜论坛
  • 自动化测试——常见的函数
  • 钢结构东莞网站建设263企业邮箱登官网
  • Merton模型与期权定价
  • 谷歌怎么做网站优化贵州网络科技有限公司
  • MySQL(安装和卸载、数据库存储原理图)
  • 明珠信息港网站建设专家建设银行签名通在网站哪里下载
  • 网站开发一般分为几个步骤好用的做网站的app
  • 阮一峰《TypeScript 教程》学习笔记——运算符
  • 协作协议(Collaborative Protocols)——下一代人机协作操作系统的工程化实践
  • I2C 驱动 --- 控制器
  • 创意网站设计团队郑州百度推广托管
  • 网盘做网站空间杭州简单网技术有限公司
  • TensorFlow学习入门
  • 强电控制器-非正常工作实验
  • 网站修改域名服务器企业静态网站
  • GitHub等平台形成的开源文化正在重塑结帖人
  • 考古并发历史(1)
  • 班级网站设计外国大气网站
  • 深拷贝浅拷贝
  • 样本与样本值
  • 无极网站网站首屏高度
  • ansible自动化运维入门篇-ansible部署
  • 如何在搜索中找到自己做的网站o2o电商交易类平台有哪些
  • Rust中错误处理机制
  • Ubuntu 24.04上安装MySQL 8.0
  • Java基于SpringBoot的高校报修与互助平台小程序【附源码、文档说明】