首先,使用redis ,要在pom.xml里添加依赖包:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
连接数据库:
//IP填的是你要访问的主机IP,port是端口
Jedis jedis = new Jedis(ip, port);
jedis.auth("123456");//密码
jedis.ping();//测试是否成功 返回pong则成功
jedis.select(0);//切换数据库
操作数据:
//操作字符串
// jedis.set("sex","男");
// System.out.println(jedis.get("sex"));
//操作哈希
// jedis.hset("user1","uname","大宝");
// jedis.hset("user1","sex","男");
//获得所有属性
// System.out.println(jedis.hgetAll("user1"));
//获得单个属性
// System.out.println(jedis.hget("user1","uname"));
//操作列表
jedis.lpush("hobby","足球","唱","跳","rap");
//堆载结构
//从上面开始取值
System.out.println(jedis.lpop("hobby"));
//从下面开始取值
System.out.println(jedis.rpop("hobby"));
运用:
1、首页第一次是读取数据库,后面读取缓存(在没有增删改的情况):
//获取redis中的数据
String blogListJsonStr = jedis.get("blogList");
//如果redis中有值
if(blogListJsonStr!= null && blogListJsonStr.length() > 0) {
// 使用redis
request.setAttribute("blogList", JSON.parse(blogListJsonStr));
}else {
//使用数据库
//从数据库中查询数据
List<Map<String, Object>> blogList = this.blogDao.freemarker_list(title, null);
//放进缓存
jedis.set("blogList", JSON.toJSONString(blogList));
//存作用域
request.setAttribute("blogList", blogList);
}
2、增删改的时候,要顺带更新缓存,下一次再次访问首页要保证redis中数据跟mysql数据是一致:
public String add() {
HttpServletRequest request = ServletActionContext.getRequest();
Map<String,String[]> parameterMap = request.getParameterMap();
try {
//清空缓存
jedis.del("blogList");
//加入数据库
this.blogDao.save(parameterMap);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "blogList";
}
public String del() {
try {
HttpServletRequest request = ServletActionContext.getRequest();
//清空缓存
jedis.del("blogList");
// 数据库中删除博客
this.blogDao.del(request.getParameterMap());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "blogList";
}