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. 下面代码打印的结果?
  2. 颠沛流离的Arcsight,辉煌不再
  3. 爬虫侵入计算机系统,【探讨】利用“爬虫技术”获取数据行为的刑事考量 ——以一起非法获取计算机信息系统数据案为例...
  4. 计算机对油画的影响,现代电脑美术影响下的油画艺术创作
  5. java clone方法_JAVA对象clone方法代码实例解析
  6. oracle数据库查询表的列
  7. RDLC报表上下标实现
  8. vector.resize 与 vector.reserve的区别(转载)
  9. ASCSDK-------通用包接入文档(COCOS篇)
  10. ie不支持replaceall_继IE之后,微软又要彻底放弃这些office了
  11. CherryPy 入门
  12. php 采集网页 按xpath,网页数据采集相对XPATH使用教程 - 八爪鱼采集器
  13. 多卡聚合设备助力无人机监控盲区打好疫情阻击战
  14. Mac也能玩3A大作?苹果这是要弄游戏本了吗?
  15. ps4系统软件升级无法连接服务器,这才是正确的解决办法 PS4怎么通过优盘升级系统...
  16. 拉普拉斯变换的物理意义是什么?
  17. arcgis栅格数据平滑_ArcGIS教程:基于ArcGIS的栅格图像平滑处理
  18. 运维平台元数据稽核小结
  19. 世界读书日:带你走近Go语言编程思维
  20. Matlab学习卡尔曼滤波的各种实例代码 KF,EKF,UKF,CKF

热门文章

  1. 基于html和Node.js的网页音乐播放器设计
  2. DirectoryInfo 类
  3. live555 android,Android之live555构建RTSP Server
  4. 为什么默认排除 junit-vintage-engine ?
  5. YOLOv5-7.0解决No module named ‘utils.datasets‘和cannot import name ‘scale_coords‘ from ‘utils.general‘
  6. 语音识别入门第七节:语言模型
  7. 计算机系统应用的书,基于个性化图书推荐的协同过滤算法
  8. 线性代数中的矩阵运算P(A,E)是什么意思?
  9. pentaho源码分析
  10. Redux 替代品 Zustand