redis作为一种高性能的NoSQL(Not Only SQL)系列的数据库,可以更好的解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。其基本原理是将数据存储在缓存之中,所以查询速度要远高于关系型数据库。
对于网页中一些基本不会发生变化的数据,使用redis存储将会极大地提高这些数据的获取速度,进而加快网页的加载,带来更好的用户体验。这里以一个下拉列表的demo做一个展示,代码附在文末:
1 分析
该案例的基本设计框架如下图所示:
其中主页面发送ajax请求服务器下拉列表的省份数据,调用服务器servlet实现以下三个步骤:
- 调用service层ProvinceService.java完成查询,返回结果存入List中
- 将数据序列化为json格式
- 响应json数据至客户端
service层的ProvinceService.java先从redis中查询数据,如果查询结果不为空则直接返回该数据,否则调用dao层ProvinceDao.java从sql数据库中查询,再将查询结果存入redis并返回。
2 sql数据库准备
创建表province,数据有id和name
CREATE TABLE province( -- 创建表
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL
);
-- 插入数据
INSERT INTO province VALUES(NULL,'北京');
INSERT INTO province VALUES(NULL,'上海');
INSERT INTO province VALUES(NULL,'广州');
INSERT INTO province VALUES(NULL,'陕西');
数据库准备之后创建相应的Province类来存储该数据库的对象:
package domain;
public class Province {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3 程序基本框架
导入jar包,包含了操作redis的jedis包,操作mysql的包,包含Jdbc模板类的spring包以及与json操作相关的jackson包等: