转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165.
本文出自 不怕报错 就怕不报错的小猿猿 的博客
java代码操作Redis命令&Redis在maven项目中的运用
前言
Redis是非关系型数据库,但本质还是数据库
Redis命令的数据类型
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(sorted set:有序集合
java代码操作Redis命令
1. 导入pom依赖(Redis连接服务端的jar包)
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
一个坑(网上很难找到办法)
博主在导入Redis依赖时遇到了导不了Redis包,不能实例化Redis的问题,卡了很久才得以解决,在此希望其他人不要踩此坑,现把解决方法贴出此次
问题的原因:
是因为博主的maven的版本与idea的版本号不兼容的问题,博主的版本:idea(2018)&&maven(3.6.2)版本
解决的方法:
把maven的版本降低,这时博主在maven的官网上下载了3.5.0版本的,然后重新配置一下maven就可以了
maven下载网址(建议下载与自己idea版本兼容的)
下载完后重新配置maven:
2.利用java代码操作Redis:Demo1.java:
package com.xiaoqing;
import redis.clients.jedis.Jedis;
import javax.sound.sampled.Port;
import java.lang.reflect.Field;
import java.util.Map;
/**
* @author 晴sister
* @site https://blog.csdn.net/men_ma
* @company
* @create 2020-10-0816:41
*
* mysql连接步骤:
* 0.导入pom依赖(mysql驱动包)
* 1.加载驱动(Class.forName)
* 2.建立连接(url、username、password)
* 3.获取预定义sql处理对象prepareStatement
* 4.执行prepareStatement
* 5.处理结果集
* 6.释放资源
*
*
* redis连接:
* 0.导入pom依赖(Redis连接服务端的jar包)
* 1.建立连接(jedis)
* 2.直接通过jedis实例去操作数据库
*
*
*/
public class Demo1 {
public static void main(String[] args) {
Jedis jedis=new Jedis("192.168.13.129", 6379);
jedis.auth("123456");
// 校验Redis服务正常,然后通过jedis连接服务正常
// System.out.println(jedis.ping());
// 操作string
// jedis.set("sname","zsf");
// System.out.println(jedis.get("sname"));
// 操作hash
// 所有的值都在user中
// User user=new User("ww","女","beijing","324332");
// for (Field field : user.getClass().getDeclaredFields()) {
// field.setAccessible(true);
// try {
// System.out.println(field.getName() + ": " + field.get(user).toString());
// jedis.hset("user1",field.getName(),field.get(user).toString());
// } catch (IllegalAccessException e) {
// e.printStackTrace();
// }
// }
// 取单个值
// System.out.println(jedis.hget("user1", "usex"));
// 取多个值
// Map<String, String> user1 = jedis.hgetAll("user1");
// for (Map.Entry<String, String> entry : user1.entrySet()) {
// System.out.println(entry.getKey() + " : " + entry.getValue());
// }
// jedis.hset("user1","uname","lisi");
// jedis.hset("user1","usex","发货");
// jedis.hset("user1","age","12");
// 操作list
// jedis.lpush("hobby","a","b","c","d","e","f","g");
System.out.println(jedis.lpop("hobby"));
System.out.println(jedis.rpop("hobby"));
}
}
Redis在maven项目中的运用
1.在查询中使用Redis的逻辑
1.导入servlet依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
2.建立BookListServlet.java类
BookListServlet.java:
package com.xiaoqing;
import redis.clients.jedis.Jedis;
import javax.print.DocPrintJob;
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;
/**
* @author 晴sister
* @site https://blog.csdn.net/men_ma
* @company
* @create 2020-10-0822:18
*/
@WebServlet("/list")
public class BookListServlet 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 {
// 先从Redis里面去书籍的前十条数据
Jedis jedis=new Jedis("192.168.13.129", 6379);
jedis.auth("123456");
// 字符串booklist存放的是,json数据字符串 List<Book> -->json
// 如果需要通过json数组传做jsp页面展示的话,需要将json数据字符串----》List<Book> jackSon
String bookList = jedis.get("bookList");
if(null==bookList||"".equals(bookList)){
// 此时意味着是第一次查询,那么需要走数据库mysql
System.out.println("先走数据库做书籍列表的查询。。。。");
String list="从mysql数据库中查询出十条数据,再转成json串。。。";
jedis.set("bookList",list);
req.setAttribute("jspList","数据来源于mysql"+jedis.get("bookList"));
}else{
// 意味着不是第一次查询,那么就可以将数据返回了
req.setAttribute("jspList","数据来源于Redis"+bookList);
}
req.getRequestDispatcher("bookList.jsp").forward(req,resp);
}
}
3.建立bookList.jsp页面:
<%--
Created by IntelliJ IDEA.
User: zjjt
Date: 2020/10/8
Time: 22:33
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>
</head>
<body>
书籍列表展示页数据:${jspList}
</body>
</html>
4.运行效果
Redis数据库中:
这是第一次发送请求的效果:
这是第二次发送请求的效果: