Redis-使用Java代码操作Redis
Java访问redis
首先在pom.xml添加依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
简单操作
实例化一个jedis
Jedis jedis = new Jedis("192.168.203.128",6379);
jedis.auth("123456");
System.out.println(jedis.ping());
操作字符串 添加键值
jedis.set("aaa","zs");//编辑
System.out.println(jedis.get("aaa"));//读取
在客户服务端就会出现对应值
操作哈希
jedis.hset("userl", "uname","ls");
jedis.hset("userl", "sex","男");
System.out.println(jedis.hgetAll("userl"));
System.out.println(jedis.hget("userl", "uname"));//指定
操作列表
jedis.lpush("hobby","a","b","c","d","e","f","g");
System.out.println(jedis.lpop("hobby"));
System.out.println(jedis.lpop("hobby"));
System.out.println(jedis.rpop("hobby"));
demo案例
测试
package com.chen;
import redis.clients.jedis.Jedis;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author嘟嘟
*/
@WebServlet("/getData")
public class DemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 首页第一次是读取数据库,后面读取缓存(在没有增删改的情况)
//首页第一次是读取数据库,后面读取缓存
Jedis jedis = new Jedis("192.168.203.128",6379);
jedis.auth("123456");
//从缓存获取当前登录的用户信息
Map<String,String> currentUser = jedis.hgetAll("currentUser");
if(currentUser != null && currentUser.size()>0){
req.setAttribute("msg","从缓存获取shuju");
req.setAttribute("currentUser",currentUser);
}else{
//第一次登录,访问数据库
req.setAttribute("msg","从数据库获取shuju");
String uname = "mie";
String upwd = "12345";
//把数据库中对应的对象存到缓存中
jedis.hset("currentUser","uname",uname);
jedis.hset("currentUser","upwd",upwd);
//此时能获取到值的原因是已经将数据储存到缓存中
currentUser = jedis.hgetAll("currentUser");
req.setAttribute("currentUser",currentUser);
}
req.getRequestDispatcher("home.jsp").forward(req,resp);
}
}
jsp
<%--
Created by IntelliJ IDEA.
User: 17936
Date: 2019/9/18
Time: 15:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
博客首页
拿取数据的方式${msg}<br>
拿取到的数据:${currentUser}
</body>
</html>
首页第一次是读取数据库,后面读取缓存
try {
HttpServletRequest request = ServletActionContext.getRequest();
//从缓存获取当前登录的用户信息
String blogList = jedis.get("blogList");
if (blogList !=null && blogList.length() > 0) {//
request.setAttribute("blogList", JSON.parse(blogList));
}
else {//把数据库中对应的对象存到缓存中
List<Map<String, Object>> blogList1 = this.blogDao.list(title, null);
jedis.set("blogList", JSON.toJSONString(blogList1));
request.setAttribute("blogList", blogList1);
}
} catch (Exception e) {
e.printStackTrace();
}
return "blogList";
实例操作增删改
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";
}