转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165. 本文出自 不怕报错 就怕不报错的小猿猿 的博客
java代码操作Redis命令&Redis在maven项目中的运用
前言Redis命令的数据类型java代码操作Redis命令1. 导入pom依赖(Redis连接服务端的jar包)一个坑(网上很难找到办法)问题的原因:解决的方法:
2.利用java代码操作Redis:Demo1.java:
Redis在maven项目中的运用1.在查询中使用Redis的逻辑1.导入servlet依赖2.建立BookListServlet.java类3.建立bookList.jsp页面:4.运行效果
2.Redis在增删改中的使用逻辑
前言
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数据库中: 这是第一次发送请求的效果:
这是第二次发送请求的效果:
2.Redis在增删改中的使用逻辑