java操作Redis

java操作Redis

添加redis的pom依赖

<dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
</dependency>

连接redis

Jedis jedis = new Jedis("192.168.182.128", 6379);  //指定Redis服务Host和port
        jedis.auth("root"); 
        String value = jedis.get("key"); //访问Redis服务
        jedis.close(); //使用完关闭连
        System.out.println(jedis.ping());
//        操作字符串
//        jedis.set("aaa","lyd");
//        System.out.println(jedis.get("aaa"));

//        操作哈希
//        jedis.hset("user1","uname3","bbb");
//        jedis.hset("user1","uname4","ccc");

//        System.out.println(jedis.hgetAll("user1"));
//        System.out.println(jedis.hget("user1", "uname3"));

//        操作列表
//        jedis.lpush("hobby","a","b","c","d","f");

//        lpop 从下往上弹栈  rpop   从上往下弹栈
//        System.out.println(jedis.lpop("hobby"));
//        System.out.println(jedis.rpop("hobby"));

Demo1:

package com.xhh;

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;
import java.util.Map;

/**
 * @author 林耀东
 * @site www.baidu.com
 * @company
 * @create  2019-11-13 16:41
 */
@WebServlet("/getDate")
public class DemoServlet 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 {
//        首页第一次是读取数据库,后面读取缓存(在没有增删改的情况)
//        首先从缓存中去拿数据
        Jedis jedis = new Jedis("192.168.182.128", 6379);
        jedis.auth("root");
//        从缓存中获取当前登录的用户信息
        Map<String, String> currentUser = jedis.hgetAll("currentUser");
        if(currentUser !=null && currentUser.size()>0){
            req.setAttribute("msg","从缓存中拿到数据");
        }
        else{
//            第一次登录,第一次访问首页数据
            req.setAttribute("msg","是从缓存中拿到数据");
            String uname = "zhangsan";
            String upass = "123456";

//            接下来的把数据中对应的对象存储到保存缓存中
            jedis.hset("currentUser","uname3","zhangsan");
            jedis.hset("currentUser","uname3","123456");
//            此时能获取到值原因是上面已经讲数据存储到缓存中
            currentUser  = jedis.hgetAll("currentUser");
            req.setAttribute("currentUser",currentUser);
        }
        req.getRequestDispatcher("/home.jsp").forward(req,resp);

    }

}

jsp:

<%--
  Created by IntelliJ IDEA.
  User: a
  Date: 2019-11-13
  Time: 16:42
  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</title>
</head>
<body>
博客首页
拿去数据的方式:${msg}<br>
拿到的数据${currentUser}
</body>
</html>

在这里插入图片描述
第一次访问时是直接读数据库,后面都是进缓存拿数据

public String list() {
		try {
			HttpServletRequest request = ServletActionContext.getRequest();
			if (StringUtils.isBlank(title)) {
				
				String blogListJsonStr = jedis.get("blogList");
				//如果redis中有值
				if(blogListJsonStr!= null && blogListJsonStr.length() > 0) {
					// 使用redis
					request.setAttribute("blogList", JSON.parse(blogListJsonStr));
				}else {
					//使用数据库
					//从数据库中查询数据
					List<Map<String, Object>> blogList = this.blogDao.freemarker_list(title, null);
					//放进缓存
					jedis.set("blogList", JSON.toJSONString(blogList));
					//存作用域
					request.setAttribute("blogList", blogList); 
				}
			}else {
				Directory directory = LuceneUtil.getDirectory(PropertiesUtil.getValue("indexPath"));
				DirectoryReader reader = LuceneUtil.getDirectoryReader(directory);
				IndexSearcher searcher = LuceneUtil.getIndexSearcher(reader);
				SmartChineseAnalyzer analyzer = new SmartChineseAnalyzer();
//				拿一句话到索引目中的索引文件中的词库进行关键词碰撞
				Query query = new QueryParser("title", analyzer).parse(title);
				Highlighter highlighter = LuceneUtil.getHighlighter(query, "title");
				
				TopDocs topDocs = searcher.search(query , 100);
				//处理得分命中的文档
				List<Map<String, Object>> blogList = new ArrayList<>();
				Map<String, Object> map = null;
				ScoreDoc[] scoreDocs = topDocs.scoreDocs;
				for (ScoreDoc scoreDoc : scoreDocs) {
					map = new HashMap<>();
					Document doc = searcher.doc(scoreDoc.doc);
					map.put("id", doc.get("id"));
					String titleHighlighter = doc.get("title");
					if(StringUtils.isNotBlank(titleHighlighter)) {
						titleHighlighter = highlighter.getBestFragment(analyzer, "title", titleHighlighter);
					}
					map.put("title", titleHighlighter);
					map.put("url", doc.get("url"));
					blogList.add(map);
				}
				
				request.setAttribute("blogList", blogList);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "blogList";
	}

实现增删查改:

public String add() {
		HttpServletRequest request = ServletActionContext.getRequest();
		Map<String,String[]> parameterMap = request.getParameterMap();
		try {
			//清空缓存
			jedis.del("blogList");
			//加入数据库
			this.blogDao.save(parameterMap);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "blogList";
	}
	
	public String del() {
		try {
		HttpServletRequest request = ServletActionContext.getRequest();
		//清空缓存
		jedis.del("blogList");
		// 数据库中删除博客
		this.blogDao.del(request.getParameterMap());
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "blogList";
	}
public String edit() {
		HttpServletRequest request = ServletActionContext.getRequest();
		Map parameterMap = request.getParameterMap();
		try {
			// 修改数据库中的值
			this.blogDao.edit(request.getParameterMap());
			//清空缓存
			jedis.del("blogList");
			// 修改lucene中的文档值
			IndexWriter writer = getIndexWriter();
			Document doc = new Document();
			doc.add(new StringField("id", JsonUtils.getParamVal(parameterMap, "bid"), Field.Store.YES));
			doc.add(new StringField("bid", JsonUtils.getParamVal(parameterMap, "bid"), Field.Store.YES));
			doc.add(new TextField("title", JsonUtils.getParamVal(parameterMap, "title"), Field.Store.YES));
			doc.add(new TextField("summary", JsonUtils.getParamVal(parameterMap, "summary"), Field.Store.YES));
			writer.updateDocument(new Term("id", JsonUtils.getParamVal(parameterMap, "bid")), doc);
			writer.close();
			// 修改静态页(相同id会之间覆盖)
			addStaticPage(JsonUtils.getParamVal(parameterMap, "bid"), parameterMap);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return "blogList";
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值