springboot使用spring-Data-Redis连接redis数据库(项目搭建整合redis完整步骤)

一、spring-Data-Redis简介

spring-data-redis针对jedis提供了如下功能:

1、 连接池自动管理,提供了一个高度封装的“RedisTemplate”类

2、针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口

  • ValueOperations:简单K-V操作

  • SetOperations:set类型数据操作

  • ZSetOperations:zset类型数据操作

  • HashOperations:针对map类型的数据操作

  • ListOperations:针对list类型的数据操作

二、具体实现步骤

1、引入maven依赖

  • starter-data-redis依赖中包含了jedis依赖
<!-- Spring Data Redis 的启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>

2、添加application.yml配置文件,配置连接池参数

  • 有时候timeout、max-wait参数会报错,不用处理。可以正常编译
spring:
  redis:
      host: 127.0.0.1
      port: 6379
      timeout: 10000
      block-when-exhausted : true
      jedis:
          pool:
            max-idle: 200
            min-idle: 50
            max-active: 1024
            max-wait: 10000

3、创建RedisConfig配置类,类容如下

  • 配置信息由注解可见
package com.example.goshopping.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@Configuration
public class RedisConfig {

    @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-idle}")
    private int maxIdle;

    @Value("${spring.redis.jedis.pool.max-wait}")
    private long maxWaitMillis;

    @Value("${spring.redis.block-when-exhausted}")
    private boolean blockWhenExhausted;

    /**
     * 1.创建JedisPoolConfig对象。在该对象中完成一些链接池配置
     */
    @Bean
    public JedisPoolConfig jedisPoolConfig() throws Exception {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
        // 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
        jedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted);
        // 是否启用pool的jmx管理功能, 默认true
        jedisPoolConfig.setJmxEnabled(true);
        return jedisPoolConfig;
    }

    /**
     * 2.创建JedisConnectionFactory:配置redis链接信息
     */
    @Bean
    @ConfigurationProperties(prefix = "spring.redis")
    public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        //关联链接池的配置对象
        factory.setPoolConfig(jedisPoolConfig);
        //配置链接Redis的信息
        //主机地址
		factory.setHostName(host);
		//端口
		factory.setPort(6379);
        return factory;
    }

    /**
     * 3.创建RedisTemplate:用于执行Redis操作的方法
     */
    @Bean
    public RedisTemplate<String,Object> redisTemplate(JedisConnectionFactory factory){
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //关联
        template.setConnectionFactory(factory);

        //为key设置序列化器
        template.setKeySerializer(new StringRedisSerializer());
        //为value设置序列化器
        template.setValueSerializer(new StringRedisSerializer());

        return template;
    }
}


4、使用以及测试结果

  • 通过注入RedisTemplate实例,再调用相关接口实现对redis操作
@RestController
public class testController {
    private Logger LOG=LoggerFactory.getLogger(testController.class);
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @RequestMapping("/hello")
    public String hello(){
        redisTemplate.opsForValue().set("v0","123");
        String v=(String) redisTemplate.opsForValue().get("v0");
        System.out.println("redis链接测试:"+v);
        return "Hello world!!";
    }
}

  • 测试结果
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值