• Java-1123


    Jedis

    1. 介绍:Jedis是一款java操作redis数据库的工具(类似JDBC)

    2. 使用步骤:

      1. 下载jedis的jar包
      2. 使用
    3. 快速入门

      //  1.获取连接
      Jedis jedis = new Jedis("localhost",6379);
      //  2.操作
      jedis.set("name","zhangsan");
      //  3.关闭连接
      jedis.close();
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    4. jedis操作各种数据结构

      		/**
           * string操作
           */
          @Test
          public void test2(){
      
              //  1.获取连接
              Jedis jedis = new Jedis();  //  空参数的时候默认local:6379
      
              //  2.操作
              jedis.set("name","zhangsan");
              String name = jedis.get("name");
              System.out.println(name);
      
              //  可以使用setex()方法,存储可以指定过期时间的key value
              jedis.setex("activecode",20,"haha");    // 键值对存入redis,20秒后自动删除
              //  3.关闭连接
              jedis.close();
          }
      
          /**
           *  哈希
           */
          @Test
          public void test3(){
      
              //  1.获取连接
              Jedis jedis = new Jedis("localhost",6379);
              //  2.操作
              jedis.hset("user","name","ls");
              jedis.hset("user","age","23");
              jedis.hset("user","gender","male");
      
              //  获取
              String name = jedis.hget("user", "name");
              System.out.println(name);
      
              Map<String, String> user = jedis.hgetAll("user");
              Set<String> keySet = user.keySet();
              for (String key :keySet){
                  System.out.print(key+":  "+user.get(key)+"  ");
                  System.out.println(jedis.hget("user",key));
              }
              System.out.println(user);
      
              //  3.关闭连接
              jedis.close();
          }
      
      
          /**
           * 链表
           */
          @Test
          public void test4(){
      
              //  1.获取连接
              Jedis jedis = new Jedis("localhost",6379);
              //  2.操作
              while (jedis.rpop("queue")!=null){
                  jedis.rpop("queue");
              }
              jedis.lpush("queue","E","C","A");
              jedis.rpush("queue","M","V","P");
              List<String> queue = jedis.lrange("queue", 0, -1);
              System.out.println(queue);
      
              //  3.关闭连接
              jedis.close();
          }
      
          /**
           * 集合
           */
          @Test
          public void test5(){
      
              //  1.获取连接
              Jedis jedis = new Jedis("localhost",6379);
              //  2.操作
              jedis.sadd("classmates","a");
              jedis.sadd("classmates","b");
      
              System.out.println(jedis.smembers("classmates"));
      
              jedis.zrem("classmates","b");
              System.out.println(jedis.smembers("classmates"));
      
              //  3.关闭连接
              jedis.close();
          }
      
          /**
           * 有序链表
           */
          @Test
          public void test6(){
      
              //  1.获取连接
              Jedis jedis = new Jedis("localhost",6379);
              //  2.操作
              jedis.zadd("set",90,"ys");
              jedis.zadd("set",70,"xsr");
      
              System.out.println(jedis.zrange("set",0,-1));
              
              //  3.关闭连接
              jedis.close();
          }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      • 61
      • 62
      • 63
      • 64
      • 65
      • 66
      • 67
      • 68
      • 69
      • 70
      • 71
      • 72
      • 73
      • 74
      • 75
      • 76
      • 77
      • 78
      • 79
      • 80
      • 81
      • 82
      • 83
      • 84
      • 85
      • 86
      • 87
      • 88
      • 89
      • 90
      • 91
      • 92
      • 93
      • 94
      • 95
      • 96
      • 97
      • 98
      • 99
      • 100
      • 101
      • 102
      • 103
      • 104
      • 105
      • 106
      • 107
      • 108
      • 109
    5. jedis连接池:jedisPool

      1. 使用:

        1. 创建JedisPool连接池对象
        2. 调用
      2. 代码:

        public class JedisPoolUtils {
        
            private static JedisPool jedisPool;
        
            static {
                //  读取配置文件
                InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
                Properties pro = new Properties();
                try {
                    pro.load(is);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                JedisPoolConfig config = new JedisPoolConfig();
                config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
                config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
        
                //  初始化jedisPool
                jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("post")));
            }
        
            /**
             * 获取连接方法
             */
            public static Jedis getJedis(){
        
                return jedisPool.getResource();
            }
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
        • 25
        • 26
        • 27
        • 28
        • 29
    6. 案例:redis缓存优化

      /**
       *	使用redis缓存
       */
      public String findAllJson(){
        //	1.先从redis中查询数据
        //	1.1获取redis客户端连接
        Jedis jedis = JedisPoolUtils.getJedis();
        String province_json = jedis.get("province");
        
        //	2.判读一下province是否为null
        if(province_json == null|| province_json.length()==0){
          //	redis没有数据,需要查询数据库,并且更新缓存
          //	2.1从数据库查询
         	List<Province> ps =	dao.findAll();
          //	2.2将list序列化到json
          ObjectMapper mapper = new ObjectMapper();
          try{
            province_json =  mapper.writeValueAsString(ps);
          }catch(JsonProcessingException e){
            e.printStacktrace();
          }
          //	2.3	将json数据存入redis中
       		jedis.set("province",province_json);
          //	释放连接,省略了try/catch和finally确认最终关闭的操作
          jedis.close();
        }else{
          //	redis中有数据,查询缓存
        }
       
        return province_json;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      1. 注意:使用redis缓存一些不经常改变的数据,
        1. 数据库的数据一旦发生改变,则需要更新缓存。
        2. 数据库的表执行了一些增删改查的操作,需要将redis缓存数据清空,再次录入
        3. 在service对应的增删改查方法中,将redis数据删除

    Maven

    1. apache出的一款项目管理工具
    2. 作用:
      1. 管理jar包:maven没有直接导入jar包,而是通过文件的配置引入所需要的jar包
      2. 编译
      3. 测试
      4. 部署
    3. 组成:
      1. 一个项目对象模型:POM.xml
      2. 一组标准集合:
      3. 一个项目生命周期:Project Lifecycle
      4. 一个依赖管理系统:
      5. 运行定义在生命周期阶段(phase)中的插件(plugin)目标(goal)的逻辑
    4. 项目结构:

    请添加图片描述

    1. Maven常用命令:
      1. compile:编译命令,产出字节码文件
      2. package:打包命令(会自动先执行打包),打成war包
      3. install:安装命令,将项目安装到本地的仓库中。
    2. Maven生命周期:三套独立的生命周期
      1. Clean Lifecycle : 构建之前的清理工作
      2. Defualt Lifecycle :构建的核心部分,编译,测试,打包,部署等等
      3. Site Lifecycle :生成项目报告,站点,发布站点
      4. 同一套生命周期中,执行后边的操作,会自动执行前面所有操作
        1. 例如defulat: 编译 测试 打包 安装 ,任意执行一个都会把之前的执行一遍
        2. clean清理:
        3. site站点发布;
    3. 坐标:被Maven管理的资源的唯一标识
      1. groupId:组织名

      2. atifactId:模块名称

      3. version:版本号

        <groupId>redis.clientsgroupId>	每一层代表一个目录,如果里面包含了多个点,每个点就是一个目录
        <artifactId>jedisartifactId>
        <version>2.7.0version>
        
        • 1
        • 2
        • 3
    4. IDEA创建MAVEN项目
      1. new module
      2. 选择maven
      3. pom文件自动打开,添加配置选项.有几种选项
        1. jar:java项目打包为jar包,默认
        2. war:web项目需要设置为war
        3. pom:maven高级配置
    5. 添加插件build标签配置
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.apache.maven.pluginsgroupId>
                      <artifactId>maven-compiler-pluginartifactId>
                      <version>3.8.1version>
                  plugin>plugins>
          build>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    6. Maven创建web项目
      1. 创建不使用骨架的web模块
      2. 添加使用war
      3. 添加webapp.WEB-INF.web.xml目录
      4. 添加tomcat插件
      5. 修改一下配置,将右侧maven/pluginstomcat7/run命令可以集成到头部按钮
    7. 依赖配置范围
      1. pom文件里面,对于添加的依赖还可以进行依赖范围的配置

        <dependency>
                    <groupId>javax.servletgroupId>
                    <artifactId>javax.servlet-apiartifactId>
                    <version>3.1.0version>
                    <scope>providedscope>	#默认值为compile,指编译环境有效
                dependency>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
      2. 依赖范围:我配置的jar包对哪些环境有效,默认值为compile请添加图片描述

  • 相关阅读:
    pytest + yaml 框架 -55. raw 不转义模板语法
    【Python数据结构与算法】线性结构小结
    Java线程
    fft理解-cooley turkey
    Error:$ is not defined ,vue 项目中引入 jquery 报错及解决方法
    linux网络编程-socket-函数及TCP通信实现
    2023-09-09 青少年软件编程(C语言)等级考试试卷(四级)解析
    PDF转成图片并识别成文字输出记录java代码
    擎创技术流 | ClickHouse实用工具—ckman教程(4)
    python环境变量配置
  • 原文地址:https://blog.csdn.net/lannister_awalys_pay/article/details/128009672