美文网首页
springboot 整合 Jedis 操作 redis

springboot 整合 Jedis 操作 redis

作者: lingmacker | 来源:发表于2019-11-16 11:46 被阅读0次

github 项目地址

  1. 首先安装redis

    • Windows 安装

      下载地址:https://github.com/microsoftarchive/redis/releases

      下载 msi 文件双击即可安装,再打开一个 cmd 窗口,使用 cd 命令切换目录到 redis安装路径下 运行:redis-server.exe redis.windows.conf 即可运行 redis。

      如果想方便的话,可以把 redis 的安装路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。

    • Ubuntu 安装

      在 ubuntu 系统中安装可以使用以下命令:

      sudo apt-get update
      sudo apt-get install redis-server
      

      启动 redis 命令 :redis-server

      查看是否启动输入以下命令:

      redis-cli
      # 输出 redis 127.0.0.1:6379>
      # 然后输入 ping
      
      redis 127.0.0.1:6379> ping
      PONG
      # 输出 PONG,说明成功运行
      
  2. 在 springboot 项目的 pom 文件中引入一下依赖

    <!--spring封装的redis,可以不导入,如果不行的话建议导入-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
    <!-- jedis 连接池依赖-->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
    </dependency>
    
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
    </dependency>
    
  3. jedis 基础使用,不使用连接池

    Jedis jedis = new Jedis("localhost");
    jedis.set(key, value);
    jedis.close();
    

    通过 Jedis 类 实例化一个 jedis 对象后,即可调用相应的方法操作redis。

  4. jedis 高级使用,通过连接池获取 jedis 对象

    • 首先在 springboot 配置文件 application.yml 中添加如下配置

      spring:
        redis:
          host: localhost  # 连接的 ip 地址
          password:        # 密码,没有的话留空,或者不配置
          port: 6379       # redis 的端口
          database: 0      # 数据库索引,通常为0
          timeout: 10000   # 连接超时时间,单位毫秒
          jedis:
            pool:
              max-active: 10  # 连接池最大连接数
              min-idle: 5     # 连接池最小空闲连接
              max-idle: 20    # 连接池最大空闲连接
              max-wait: -1    # 连接池最大阻塞等待时间(负值表示无限制,单位毫秒)
      
      
    • 接下来创建 JedisConfig.java 文件,用于配置 Jedis 连接池

      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import redis.clients.jedis.JedisPool;
      import redis.clients.jedis.JedisPoolConfig;
      
      @Configuration
      public class JedisConfig {
          @Value("${spring.redis.host}")
          private  String host;
      
          @Value("${spring.redis.port}")
          private  int port;
      
          @Value("${spring.redis.timeout}")
          private  int timeout;
      
          @Value("${spring.redis.jedis.pool.max-wait}")
          private  int maxWait;
      
          @Value("${spring.redis.jedis.pool.max-idle}")
          private  int maxIdle;
      
          @Value("${spring.redis.jedis.pool.minidle}")
          private  int minIdle;
          
          
          @Bean("jedisPool")
          public  JedisPool jedisPool() {
              JedisPoolConfig config = new JedisPoolConfig();
              config.setMinIdle(minIdle);
              config.setMaxWaitMillis(maxWait);
              config.setMaxIdle(maxIdle);
      
              // 这里我的redis没有设置密码,所以创建连接池就没有使用密码
              return new JedisPool(config, host, port, timeout);
          }
      }
      
    • 最后创建 JedisService 文件,用于操作 redis

      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Component;
      import redis.clients.jedis.Jedis;
      import redis.clients.jedis.JedisPool;
      
      @Service("jedisService")
      public class JedisService {
          @Autowired
          JedisPool jedisPool;
      
          public void set(String key, String value) {
              try (Jedis resource = jedisPool.getResource()) {
                  resource.set(key, value);
              }
          }
      
          public void update(String key, String value) {
              try (Jedis jedis = jedisPool.getResource()) {
                  jedis.set(key, value);
              }
          }
        
            public Object get(String key) {
              try (Jedis jedis = jedisPool.getResource()) {
                  return jedis.get(key);
              }
          }
      
          public void delete(String... key) {
              try (Jedis jedis = jedisPool.getResource()) {
                  jedis.del(key);
              }
          }
      
      }
      

      注意:通过 jedisPool.getResources() 时使用 Java try-with-resource 语法,使得在操作 redis 后自动关闭连接。

相关文章

网友评论

      本文标题:springboot 整合 Jedis 操作 redis

      本文链接:https://www.haomeiwen.com/subject/asskdctx.html