我的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存储过程包名。

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

如果有多个应用:

  • 易变数据的缓存管理不应该寄宿在各自的应用程序池中。应该统一有一个缓存管理中心;
  • 稳定数据,应该在各自的应用程序池中寄存,以增强性能,以 最大缓存时间 为周期,一旦第一次缓存时间超过最大缓存时间,则强制失效。
时间: 2024-08-24 23:57:16

我的ORM之十一 -- 缓存的相关文章

是谁决定了走redis缓存?当然是mybatis啊

1.是谁决定了走redis缓存?当然是mybatis啊 mybatis里默认实现数据的增删改查功能,这里要用到缓存啊 而且是mybatis这种orm框架采用缓存机制的,mybatis默认都有两层缓存了!所以,你只需在mybatis中配置redis即可,mybtis之后就会自动走redist. 2.你只需在mybatis中配置redis即可,mybtis之后就会自动走redist.!!!!而不是在spring中!!! 3.你只需在mybatis中配置redis即可,mybtis之后就会自动走red

Hibernate缓存原理与策略

Hibernate缓存原理: 对于Hibernate这类ORM而言,缓存显的尤为重要,它是持久层性能提升的关键.简单来讲Hibernate就是对JDBC进行封装,以实现内部状态的管理,OR关系的映射等,但随之带来的就是数据访问效率的降低,和性能的下降,而缓存就是弥补这一缺点的重要方法. 缓存就是数据库数据在内存中的临时容器,包括数据库数据在内存中的临时拷贝,它位于数据库与数据库访问层中间.ORM在查询数据时首先会根据自身的缓存管理策略,在缓存中查找相关数据,如发现所需的数据,则直接将此数据作为结

Hibernate缓存原理:

对于Hibernate这类ORM而言,缓存显的尤为重要,它是持久层性能提升的关键.简单来讲Hibernate就是对JDBC进行封装,以实现内部状态的管理,OR关系的映射等,但随之带来的就是数据访问效率的降低,和性能的下降,而缓存就是弥补这一缺点的重要方法. 缓存就是数据库数据在内存中的临时容器,包括数据库数据在内存中的临时拷贝,它位于数据库与数据库访问层中间.ORM在查询数据时首先会根据自身的缓存管 理策略,在缓存中查找相关数据,如发现所需的数据,则直接将此数据作为结果加以利用,从而避免了数据库

Dos.ORM - 目录、介绍

引言: Dos.ORM(原Hxj.Data)于2009年发布.2015年正式开源,该组件已在数百个成熟项目中应用,是目前国内用户量最大.最活跃.最完善的国产ORM.初期开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,后期参考EF的Lambda语法进行大量扩展. 上手简单,0学习成本.使用方便,按照sql书写习惯编写C#.NET代码.功能强大. 高性能,接近手写Sql. 体积小(不到150kb,仅一个dll). 完美支持Sql Server(2000至最新版),MySq

前端缓存技术一:使用ETags减少Web应用带宽和负载

介绍 最近,大众对于REST风格应用架构表现出强烈兴趣,这表明Web的优雅设计开始受到人们的注意.现在,我们逐渐理解了"3W架构(Architecture of the World Wide Web)"内在所蕴含的可伸缩性和弹性,并进一步探索运用其范式的方法.本文中,我们将探究一个可被Web开发者利用的.鲜为人知的工具,不引人注意的"ETag响应头(ETag Response Header)",以及如何将它集成进基于Spring和Hibernate的动态Web应用,

ORM框架的前世今生

目录 一.ORM简介二.ORM的工作原理三.ORM的优缺点四.常见的ORM框架 一.ORM简介 ORM(Object Relational Mapping)对象关系映射,一般指持久化数据和实体对象的映射 数据存储是绝大多数软件系统都要接触到的技术,具有一定规模的软件产品,为了方便存储和管理数据,便引入了数据库这一工具,但是数据如何从程序写入数据库的呢? 为方便程序员通过代码将数据写入数据库,一般的语言开发的厂商都会为各种数据库适配数据库连接的驱动程序,比如ADO.Net,JDBC等. 但是数据库

[转帖]ORM框架的前世今生

https://www.cnblogs.com/7tiny/p/9551754.html 目录 一.ORM简介二.ORM的工作原理三.ORM的优缺点四.常见的ORM框架 一.ORM简介 ORM(Object Relational Mapping)对象关系映射,一般指持久化数据和实体对象的映射 数据存储是绝大多数软件系统都要接触到的技术,具有一定规模的软件产品,为了方便存储和管理数据,便引入了数据库这一工具,但是数据如何从程序写入数据库的呢? 为方便程序员通过代码将数据写入数据库,一般的语言开发的

应用级缓存

基于空间:指缓存设置了存储空间,如果设置为10MB,当达到存储空间上限时,按照一定的策略移除数据. 基于容量:指缓存设置了最大大小,当缓存的条目超过最大大小时,按照一定的策略移除旧数据. 基于时间 TTL(Time To Live):存活期,即缓存数据从创建开始直到到期的一个时间段. TTI(Time To Idle):空闲期,即缓存数据多久没有被访问后移除缓存的时间. 基于Java对象引用 软引用:如果一个对象是软引用,那么当JVM堆内存不足时,垃圾回收器可以回收这些对象. 弱引用:当垃圾回收

【转载】android 常用开源框架

对于Android初学者以及对于我们菜鸟,这些大神们开发的轻量级框架非常有用(更别说开源的了). 下面转载这10个框架的介绍:(按顺序来吧没有什么排名). 一.  Afinal 官方介绍: Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp. 通过finalActivity,我们可以通过注解的方式进行绑定ui和事件. 通过finalBitmap,我们可以方便的加载bitmap图片,而无