cached-query

Apache
Java
跨平台
2014-09-19
alexxiyang

介绍

我们常常有这样的需求:当我们把memcached加入到项目后我还还要写一个 cacheUtils 或者 cacheManager 之类的类来操作memcached。并且一般的操作不外乎是这种操作:

  1. 拿到一段sql,先去memcahed里面看下是否有缓存,如果有就直接返回结果

  2. 如果没有就直接查询数据库

  3. 查到数据之后先保存到memcached里面再返回给上层调用者

这种需求基本上占了缓存操作的大部分情况。这三件事情写起来很简单,其实还是有一些代码量的。cached-query 是一个轻量级的类库,帮你做了以上三件事情,并且只提供一个方法就是通过sql查询得出一个列表。

安装

添加依赖到 pom.xml

<dependency>
  <groupId>org.crazycake</groupId>
  <artifactId>cached-query</artifactId>
  <version>1.0.0-RELEASE</version>
</dependency>

使用方法

建立一个配置文件 cached-query.properties  在classpath跟目录下,你可以放到 src/resources 下

#cache type. [memcached]
cache.type=memcached
cache.host=127.0.0.1
cache.port=11211
cache.expire=1800

建立你要查询的表对应的model

public class Student implements Serializable{
	private Integer studentId;
	private String studentName;
	public Integer getStudentId() {
		return studentId;
	}
	public void setStudentId(Integer studentId) {
		this.studentId = studentId;
	}
	public String getStudentName() {
		return studentName;
	}
	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
	
}

在你的代码中使用它

CachedQuery q = CachedQuery.getInstance();
String sql="select student_id,student_name from student where student_id=?";
Object[] params = new Object[]{1};
ArrayList<Student> list = q.queryList(sql, params, conn, Student.class);

注意事项

  • 要查询并被实例化的类一定要实现Serializable接口

  • 实例化的类里面属性的名字要取跟数据库里面字段对应的驼峰式命名,比如数据库中的字段是 student_name 对应的属性就是 studentName

  • 类的属性不能用基本类型,int要用Integer,float用Float,其他依次类推,其实这样开发者养成一个好习惯也是很好的

加载中

评论(0)

暂无评论

暂无资讯

暂无问答

MYSQL SQL_NO_CACHE的真正含义

当我们想用SQL_NO_CACHE来禁止结果缓存时发现结果和我们的预期不一样,查询执行的结果仍然是缓存后的结果。其实,SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返...

2015/11/11 10:38
488
0
Ecshop数据库类常用方法

getAll($sql)和getAllCached($sql, $cached = ‘FILEFIRST’):获取所有记录。 getRow($sql, $limited = false)和getRowCached($sql, $cached = ‘FILEFIRST’):获取单行记录。 getCol($sq...

2015/05/06 13:14
10
0
我喜欢的PHP数据库操作类ez_sql

ezSQL Overview download ez_sql.zip To email the creator: justin_at_visunet_dot_ie · ezSQL is a widget that makes it very fast and easy for you to use database(s) within your PH...

2011/08/26 13:56
731
0
8.10.3 The MySQL Query Cache

原文地址 8.10.3.1 How the Query Cache Operates 8.10.3.2 Query Cache SELECT Options 8.10.3.3 Query Cache Configuration 8.10.3.4 Query Cache Status and Maintenance Note The query ...

2018/06/08 15:10
0
0
How Memory is being used

To determine what plans are in the cache and how often they're used we can use sys.dm_os_memory_cache_counters dm view . SELECT TOP 6 LEFT([name], 20) as [name], LEFT([type...

2015/11/10 10:57
6
0
MySQL高速缓存启动方法及参数详解

默认配置下,MySQL的该功能是没有启动的,可能你通过show variables like '%query_cache%';会发现其变量have_query_cache的值是yes,MYSQL初学者很容易以为这个参数为YES就代表开启了查询缓存...

2013/12/10 10:01
117
0
Two Simple Rules for HTTP Caching

In practice, you only need two settings to optimize caching: Don’t cache HTML Cache everything else forever “Wooah…hang on!”, we hear you say. “Cache all my scripts and im...

2013/02/04 15:33
11
0
MySQL高速缓存

MySQL高速缓存启动方法及参数详解query_cache_size=32M query_cache_type=1,默认配置下,MySQL的该功能是没有启动的,可能你通过show variables like '%query_cache%';会发现其变量have_qu...

2016/04/07 14:31
3
1
转载:How we optimized 100 sec elasticsearch queries

In a SQL world, query optimizers are well matured and understood, distributed systems on other hand are new and not very mature. Understanding how the queries work is very impor...

2015/09/17 19:52
13
0
MySQL5.6.26打开数据库缓存

MySQL在很多场景下,都有必要打开其缓存,以提高查询的性能和速度,譬如读密集的应用。

2015/11/17 16:05
33
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部