使用java代码操作redis

1 java访问redis
1.1 添加依赖
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.9.0</version>
    </dependency>
1.2 Java连接redis
 //输入ip 端口号 密码
        Jedis jedis = new Jedis("122.51.229.49", 6379);
        jedis.auth("123456");//认证权限
        //测试连接 打印pong 成功
        // System.out.println(jedis.ping());
        //选择数据库 打印OK 成功
        //  System.out.println(jedis.select(2));
1.3 Java操作redis
  string(字符串)
  hash(哈希)
  list(列表)
  set(集合)
  zset(sorted set:有序集合)
  zadd/zrevrange
package com.swx.idea;

import redis.clients.jedis.Jedis;

/**
 * @author Songwanxi
 * @site www.lentter.club
 * @company
 * @create  2019-11-12 16:17
 */
public class Redis {
   
    public static void main(String[] args) {
   
        //输入ip 端口号 密码
        Jedis jedis = new Jedis("122.51.229.49", 6379);
        jedis.auth("123456");//认证权限
        //测试连接 打印pong 成功
        // System.out.println(jedis.ping());
        //选择数据库 打印OK 成功
        //  System.out.println(jedis.select(2));

        //测试三种数据类型 String
        //jedis.set("uname","swx");
        // System.out.println(jedis.get("uname"));
//        jedis.set("usex","man");
//        jedis.set("addr","长沙");
//        System.out.println(jedis.type("usex"));

        //hash
        //jedis.hset("swx","姓名","swx");
//        jedis.hdel("swx","姓名");
//        jedis.hset("学生1","姓名","时王");
//        jedis.hset("学生1","年龄","18");
        //用反射将一个对象存进去
//        User user = new User("swx","man","cs",18);
//        for (Field field : user.getClass().getDeclaredFields()) {
   
//            //打开权限
//            field.setAccessible(true);
//            try {
   
//                jedis.hset("学生2",field.getName(),field.get(user).toString());
//            } catch (IllegalAccessException e) {
   
//                e.printStackTrace();
//            }
//
//        }
//        System.out.println(jedis.hgetAll("学生2"));
//        Map<String, String> map = jedis.hgetAll("学生2");

        //list l/r 左/右
//        jedis.lpush("list","a","b","d","e","f","g");
//        System.out.println(jedis.lpop("list"));
//        System.out.println(jedis.lrange("list", 2, -1));
//        System.out.println(jedis.rpop("list"));
    }
}

package com.swx.idea;

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 Songwanxi
 * @site www.lentter.club
 * @company
 * @create  2019-11-12 18:20
 */
@WebServlet("/booklist")
public class RedisServlet 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 {
   
        //假设第一次查询 需要进入mysql数据库查询,将查询到的结果存入到redis中,后面查询时就直接从redis中获取(性能更好)
        Jedis jedis = new Jedis("122.51.229.49",6379);
        jedis.auth("123456");
        //查询
        //字符串uname存放的是  json数据字符串  List<uname> ==>json
        //如果需要通过json数组传做jsp页面展示的话,需要将json数据字符串转换为==>List<uname> 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);
    }
}

项目实战

原理图:
在这里插入图片描述
在这里插入图片描述
遇到两个问题:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值