Redis-安装和命令操作

(https://blog.csdn.net/qq_45174759/article/details/102525843)上,演示Redis使用Java代码操作,以及在项目中的实际应用。

使用Java代码操作Redis

Demo1.java
代码如下:

package com.hc;import redis.clients.jedis.Jedis;/*** @author胡聪* @site www.hc.com* @company xxx公司* @create  2019-10-13 10:29*/
public class Demo1 {public static void main(String[] args) {Jedis jedis=new Jedis("192.168.149.129",6379);jedis.auth("123456");System.out.println(jedis.ping());/*String(字符串)*///存值
//        jedis.set("name","hc");
//        jedis.set("sex","男");//取值
//        System.out.println(jedis.get("name"));/*哈希(Hash)*/
//        jedis.hset("user","name","hc");
//        jedis.hset("user","sex","男");
//        jedis.hset("user","age","20");
//        jedis.hset("user","pwd","375199");
//        System.out.println(jedis.hget("user","naem"));
//        Map<String, String> user = jedis.hgetAll("user");
//        for (Map.Entry<String, String> e : user.entrySet()) {
//            System.out.println("key:"+e.getKey()+",value:"+e.getValue());
//        }/*列表(List)*/jedis.lpush("hobby","a","b","c","d");System.out.println(jedis.lpop("hobby"));System.out.println(jedis.rpop("hobby"));}
}

项目中的应用演示例子
查询中使用redis的逻辑
如图所示:

redis在增删改中的使用
如图所示:

Demoservlet.java
代码如下:

package com.hc;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;/*** @author胡聪* @site www.hc.com* @company xxx公司* @create  2019-10-14 01:13*/
@WebServlet("/demo1")
public class Demoservlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Jedis jedis=new Jedis("192.168.149.129",6379);jedis.auth("123456");String booklist = jedis.get("booklist");if(booklist==null || "".equals(booklist)){//模拟实际项目开发需求,在项目中运用redis//查询数据库String mysqldata="data";//将mysqldata数据源转成json数组串jedis.set("booklist",mysqldata);booklist = jedis.get("booklist");req.setAttribute("mag","走了数据库数据");req.setAttribute("booklist",booklist);req.getRequestDispatcher("/booklist.jsp").forward(req,resp);}else{req.setAttribute("mag","直接从redis里面拿了数据");req.setAttribute("booklist",booklist);req.getRequestDispatcher("/booklist.jsp").forward(req,resp);}}
}

booklist.jsp

<%--Created by IntelliJ IDEA.User: machenikeDate: 2019/10/13Time: 11:53To 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>
${mag}:${booklist}
</body>
</html>

效果如图所示:
第一次访问

第二次访问

项目实战演示(利用的是原生mvc框架演示)

实现来看一下我们的项目层理结构
如图所示:

web.xml
初次使用idea建立web项目时,你可能会遇到不能使用el表达式
解决办法一 : 修改web.xml的头文件,可以修改为:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

解决办法二 : 在jsp中修改
但是这个方法不推荐,因为我们需要在每一个用到el表达式的页面进行代码的添加:

  <%@ page isELIgnored="false"%>

第一种方法
代码如下:

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>Archetype Created Web Application</display-name><filter><filter-name>encodingFiter</filter-name><filter-class>com.hc.util.EncodingFiter</filter-class></filter><filter-mapping><filter-name>encodingFiter</filter-name><!-- /* 代表应用目录下的所有请求 --><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>com.hc.framework.DispatcherServlet</servlet-class><init-param><param-name>xmlPath</param-name><param-value>/mvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>
</web-app>

由于是在maven项目中使用mvc框架,所以我们要导入相应的架包,在idea中使用mvc框架,它的层级关系和eclipse不同,所以会出现找不到.xml文件的问题,我们需要在pom.xml依赖中定义读取.xml文件的根目录
如图所示:

这样我们就可以读取到java文件下的.xml文件了,也就是可以解析它了
pom.xml
代码如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hc</groupId><artifactId>mavendemo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>mavendemo Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><servlet.version>4.0.0</servlet.version><mysql.version>5.1.44</mysql.version><jstl.version>1.2</jstl.version><standard.version>1.1.2</standard.version><tomcat-jsp.version>8.0.47</tomcat-jsp.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version><scope>provided</scope></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>${standard.version}</version></dependency><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jsp-api</artifactId><version>${tomcat-jsp.version}</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.8.0</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.2.0</version></dependency></dependencies><build><finalName>mavendemo</finalName><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build>
</project>

然后就是我们redis实际运用了,修改我们的 BookAction.java
BookAction.java
代码如下:

package com.hc.web;import com.alibaba.fastjson.JSON;
import com.hc.dao.BookDao;
import com..entity.Book;
import com.hc.framework.ActionSupport;
import com.hc.framework.ModelDrivern;
import com.hc.util.PageBean;
import redis.clients.jedis.Jedis;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.SQLException;
import java.util.List;public class BookAction extends ActionSupport implements ModelDrivern<Book> {private Book book = new Book();private BookDao bookDao = new BookDao();/*** 分页查询* @param req* @param resp* @return*/public String list(HttpServletRequest req,HttpServletResponse resp) {PageBean pageBean = new PageBean();pageBean.setRequest(req);try {List<Book> list = this.bookDao.list(book, pageBean);Jedis jedis=new Jedis("192.168.149.129",6379);jedis.auth("123456");String booklist = jedis.get("booklist");if(booklist==null || "".equals(booklist)){System.out.println("先从mysql数据库拿数据,很慢");String mysqldata= JSON.toJSONString(list);jedis.set("booklist",mysqldata);booklist = jedis.get("booklist");req.setAttribute("bookList",list);req.setAttribute("pageBean", pageBean);}else{System.out.println("直接从redis拿数据,很快");req.setAttribute("bookList", JSON.parse(booklist));req.setAttribute("pageBean", pageBean);jedis.del("booklist");System.out.println("查询方法更新缓存");}} catch (InstantiationException | IllegalAccessException | SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return "list";}/*** 跳转到增加或者修改页面* @param req* @param resp* @return*/public String preSave(HttpServletRequest req,HttpServletResponse resp) {
//      bid的类型是int类型,而int类型的默认值是0,如果jsp未传递bid的参数值,那么bid=0if(book.getBid() == 0) {System.out.println("增加逻辑.....");}else {
//          修改数据回显逻辑        try {
//              查单个Book b = this.bookDao.list(book, null).get(0);req.setAttribute("book", b);} catch (InstantiationException | IllegalAccessException | SQLException e) {e.printStackTrace();}}
//      新增页面与修改页面是同一个jspreturn "edit";}/*** 新增* @param req* @param resp* @return*/public String add(HttpServletRequest req,HttpServletResponse resp) {try {int add = this.bookDao.add(book);if(add>0){//           更新缓存Jedis jedis=new Jedis("192.168.149.129",6379);jedis.auth("123456");jedis.del("booklist");System.out.println("增加方法更新缓存");}} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException| SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}
//      新增完了后需要刷新页面return "toList";}/*** 修改* @param req* @param resp* @return*/public String edit(HttpServletRequest req,HttpServletResponse resp) {try {int edit = this.bookDao.edit(book);if(edit>0){//          更新缓存Jedis jedis=new Jedis("192.168.149.129",6379);jedis.auth("123456");jedis.del("booklist");System.out.println("修改方法更新缓存");}} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException| SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}
//      修改完了后需要刷新页面return "toList";}/*** 删除* @param req* @param resp* @return*/public String del(HttpServletRequest req,HttpServletResponse resp) {try {int del = this.bookDao.del(book);if(del>0){//          更新缓存Jedis jedis=new Jedis("192.168.149.129",6379);jedis.auth("123456");jedis.del("booklist");System.out.println("删除方法更新缓存");}} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException| SQLException e) {e.printStackTrace();}
//      新增完了后需要刷新页面return "toList";}@Overridepublic Book getModel() {return book;}
}

查询方法运行结果如图所示:


时间对比图。如图所示:


增删改方法运行结果如图所示:

redis-使用Java代码操作相关推荐

  1. Redis介绍 Java客户端操作Redis

    Redis介绍 && Java客户端操作Redis 本文内容 redis介绍 redis的 shell 客户端简介 redis的 java 客户端简介 环境配置 redis 2.8.1 ...

  2. Redis介绍 Java客户端操作Redis

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow Redis介绍 & ...

  3. Java代码操作win后台进程

    Java代码操作win后台进程 话不多说,直接上代码 强调说明: 使用的时候程序要有管理员权限,也就是以管理员身份运行,运行IDE,或是运行打包好的黑窗口. /*** 代达罗斯之殇** @ClassN ...

  4. JDBC:标准接口API ,即同一套Java代码操作不同的关系型数据库

    JDBC 今日目标 掌握JDBC的的CRUD 理解JDBC中各个对象的作用 掌握Druid的使用 1,JDBC概述 JDBC:通过java语言操作数据库中的数据. 1.1 JDBC概念 JDBC 就是 ...

  5. 在IDEA中创建maven项目编写java代码操作HDFS集群

    一.安装win10编译过的hadoop 1.将编译好的hadoop包放在非中文目录 2.配置HADOOP_HOME环境变量 3.将hadoop包的bin目录加到PATH环境变量中 二.在idea中创建 ...

  6. Redis:使用java代码操作Redis

    目录 一.前置准备 二.操作string 三.操作哈希 四.操作List 由左向右 由右向左 五. 操作Set 一.前置准备 启动redis的服务 导入pom依赖 新建一个包 成功 连接的代码 Jed ...

  7. elasticsearch的java代码操作详解

    Java操作es集群步骤 1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功 ...

  8. java pdf增删改查_如何利用Java代码操作索引库?

    今天是刘小爱自学Java的第161天. 感谢你的观看,谢谢你. 学习计划安排如下: 学了几天的Elasticserch,但都是它本身的知识点,如何通过Java语言去操作它呢? 这就好比以前学数据库,在 ...

  9. 【转】Java代码操作Redis的sentinel和Redis的集群Cluster操作

    总共四台机器,crxy99,crxy98分别是主节点和从节点.   crxy97和crxy96是两个监控此主从架构的sentinel节点. 直接看代码: 1 import org.junit.Test ...

最新文章

  1. com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'user'
  2. protoc gen php,protoc-gen-php --php_out: protoc-gen-php: Plugin output is unparseable.
  3. 菜鸟教程 之 shell 脚本学习笔记 (一)
  4. 计算机组成原理课后习题答案一
  5. 前端学习(2866):自定义组件库效果演示
  6. 小白 白嫖7天百度云网盘会员,高速下载
  7. 计算机科学数学背景,计算机科学中的数学教育.pdf
  8. MPEG-2 PS流
  9. 一个简洁的背单词、背短语python程序——英文背记系统(自用)
  10. WWDC22:“花里胡哨”的苹果又会给我们带来什么惊喜呢?
  11. Infrastructure 知识: dnf对module的处理
  12. 263邮件服务器地址,263企业邮箱 服务器IP汇总
  13. python模拟鼠标滚动
  14. css系列-ol,ul
  15. 没有权限访问储存此文件的计算机,win10你没有权限在此位置中保存文件的解决方法...
  16. Quill富文本的使用以及自定义图片和视频处理事件
  17. 猜数游戏python课程设计_猜数字游戏课程设计完整版
  18. 个人作业--四则运算3(PSP)
  19. JavaScript querySelectorAll()和getElementsByTagName的区别
  20. GIS教程之在 R 中使用 Leaflet 的交互式地图

热门文章

  1. android不能访问数据库文件,android下访问已存在的sqlite数据库文件的办法
  2. border-radius理解-边框棱角变圆
  3. 14. echarts画双y轴
  4. C/C++时间戳转换函数
  5. 【机器学习】之 主成分分析PCA
  6. 指纹识别综述(8): 唯一性
  7. Item 3: Understand decltype
  8. cas自定义登陆认证
  9. 控件:TextView
  10. 面试季,各大厂真实面试题拿走不谢