zoukankan      html  css  js  c++  java
  • 我的ORM之十一 -- 缓存

    我的ORM索引

    对某一个查询频繁重复,应该使用缓存。

    缓存应该是可以配置。

    配置

    Web.config:

    <configuration>
      <configSections>
        <section name="MyOql" type="MyOql.MyOqlConfigSect,MyOql" />
      </configSections>
      <MyOql configSource="MyOql.config" />
    </configuration>
    MyOql.config:
    <MyOql>
      <Entitys db="dbo" CacheTime="0" CacheSqlTime="0" MaxCacheTime="43200" OraclePKG="PKG" Owner="dbo" >
        <Group  Name="本地缓存"  CacheType="Local" CacheSqlTime="3600" CacheTime="3600" >
          <Entity Name="S_Menu"   UsePower="="  />
          <Entity Name="P_CarInfo" />
        </Group>
      </Entitys>
      <DbProviders>
        <Provider Name="SqlServer" Type="MyOql.Provider.SqlServer,MyOql"/>
        <Provider Name="MySql" Type="MyOql.Provider.MySql,MyOql.MySql"/>
        <Provider Name="Oracle" Type="MyOql.Provider.Oracle,MyOql.OracleProvider"/>
      </DbProviders>
    </MyOql>
    
    

    配置项

    db:  指定数据库配置项
    Owner:  指定数据库前缀
    Name:  数据库表名,视图名,存储过程名。
    CacheTime:  单表按主键、唯一键、自增键查询缓存时间。单位 秒
    CacheSqlTime:  按除 CacheTime 之外的情况下,缓存时间。如果有多个表,按配置项最小的缓存时间。 单位 秒
    ToShadow:  配置是否转存到影子库,当物理删除的时候,可以把数据转存到影子库。布尔值
    MaxCacheTime:   如果最初缓存时间到现在超过最大缓存时间,则强制失效。单位 秒
    CacheType:  指定缓存服务器。
    UsePower:  权限类型,单字符表示一个权限,可选类型: CRUD= ~*  
           其中:
          C 表示 Create,R 表示Read,U表示Update,D表示Delete。
          = 表示是否启用行集权限.
          
    ~ 表示自定义过滤。
          * 是所有权限
          true 表示所有权限
          false 表示没有任何权限
    Filter:  在 UsePower = "~" 时, Filter 表示传递给自定义过滤的 关键字
    Type:  表示表的类型, 如: Corp 表示是公司表。可以动态对该表进行分库。 
    Log:  可选值,单个字符表示一个MyOql操作类型的日志, CRUD=*
    OraclePKG:  Oracle存储过程包名。

    缓存部署及机制

    数据库中的数据,可以分为:
    • 稳定数据
    • 易变数据

    如果有多个应用,这种场景更明显。

    • 易变数据的缓存管理不应该寄宿在各自的应用程序池中。应该统一有一个缓存管理中心;
    • 稳定数据,应该在各自的应用程序池中寄存,以增强性能

    稳定数据,是相对的,稳定数据也有被更新的时候,用以下办法破坏它。

    • 设置 最大缓存时间,一旦第一次缓存时间超过最大缓存时间,则强制失效。
    • 缓存中心记录每个表的最后破坏时间,稳定数据所在的程序,周期性检测。

     MyOqlCache是以Windows服务形式,提供基于 TCP 协议的 WCF 服务 ,安装步骤:

    1. 编译 DbEnt

    2. 编译 MyOqlCache,如果出错,请检查 Dll 文件路径。

    3. 运行 MyOqlCache安装.bat

    NoSql的应用

    所谓术业有专攻,NoSql和RMDB不在一个层次上,无法替换。使用 NoSql 做为缓存项,或是保存中间计算结果倒是很合适。

    RMDB大都是基于磁盘文件的,NoSql大都是基于内存的。能和NoSql比性能的,应该是 内存数据库!

    目前缓存中心使用的是 System.Runtime.Cache 保存缓存项。如果想使用 NoSql ,需要:

    1. 打开 MyOqlCache 项目,打开 MyOqlCache.cs ,找到 dbo.CacheInstance 

    2. 仿照 MyOqlHttpCacheDefaultInstance 重新一个类,并赋值给 dbo.CacheInstance 即可。

  • 相关阅读:
    C# 视频监控系列:学习地址汇总
    【转】C# 视频监控系列(13):H264播放器——控制播放和截图
    【转】C# 视频监控系列(12):H264播放器——播放录像文件
    【转】C#播放H264裸码流
    采集音频和摄像头视频并实时H264编码及AAC编码
    IntelliJ-IDEA和Git、GitHub、Gitlab的使用
    退出app 退出应用程序
    Android Service+Socket 联网交互
    Android 对话框(Dialog)大全 建立你自己的对话框
    canvas.drawBitmap(bitmap, src, dst, paint)
  • 原文地址:https://www.cnblogs.com/newsea/p/4531935.html
Copyright © 2011-2022 走看看