java代码操作Redis命令&Redis在maven项目中的运用

转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165.
本文出自 不怕报错 就怕不报错的小猿猿 的博客

前言

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在增删改中的使用逻辑

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值