Spring Boot系统用Redis做缓存

现在的分布式系统每天都会被大量访问,如果单靠关系型数据库来支撑,即使再大的连接数恐怕都不够,因此需要引入内存数据库将那些固定不变的数据或者是热点数据放到内存中存储,这样不仅提升了查询效率,而且可以减轻数据库的压力。今天用Spring Boot + Redis 实现数据的存储和查询。

1. Redis项目依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
	<version>2.3.2.RELEASE</version>
</dependency>
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.9.0</version>
</dependency>

为什么需要spring-boot-starter-data-redis

官网是这样说的:

The Spring Data Redis (or SDR) framework makes it easy to write Spring applications that use the Redis key value store by eliminating the redundant tasks and boiler plate code required for interacting with the store through Spring’s excellent infrastructure support.

翻译后:

Spring Data Redis 这个starter通过Spring优秀的基础设施的支持消除了原有的冗余任务和恼人的模板代码,让键值对数据的存储变得非常容易。

终于明白了,有了这个starter,我们不用写一大堆额外的代码,用一种近乎简单的方式就能使用redis的那些命令了。

redis.clients是干嘛的呢,这个是一个redis客户端,通过它提供的一些接口,我们可以轻松的访问redis数据库。

2. Redis配置

这里是采用yml的方式配置,采用的是Redis单机模式,后续会介绍如何使用集群模式。

在yml配置文件中的spring层级下加上下面的东西

redis:
      database: 0
      host: 127.0.0.1
      port: 6379
      password:
      jedis:
        pool:
          max-active: 200
          max-idle: 8
          min-idle: 0

3. 做一个配置类接收这些参数

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CachingConfigurerSupport;
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 extends CachingConfigurerSupport {
    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;


    @Value("${spring.redis.jedis.pool.max-active}")
    private int maxActive;

    @Value("${spring.redis.jedis.pool.max-idle}")
    private int maxIdle;

    @Value("${spring.redis.jedis.pool.min-idle}")
    private int minIdle;

    @Bean(name="jedisPoolFactory")
    public JedisPool redisPoolFactory(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(1000);
        jedisPoolConfig.setMaxTotal(maxActive);
        jedisPoolConfig.setMinIdle(minIdle);

        jedisPoolConfig.setTestOnBorrow(true);
        jedisPoolConfig.setTestOnReturn(true);

        JedisPool jedisPool = new JedisPool(jedisPoolConfig,host,port,1000,null);

        return jedisPool;
    }

}

4. 写一个Controller类进行测试

@RequestMapping("redis")
@RestController
public class RedisController {
    @Autowired
    private JedisConfig jedisConfig;

    @RequestMapping("set")
    public String set(@RequestParam String value) {
        JedisPool jedisPool = jedisConfig.redisPoolFactory();
        jedisPool.getResource().set("mykey", value);
        return jedisPool.getResource().get("mykey");
    }
}

5. 启动Spring Boot项目

通过下面的地址访问,就可以将下面输入的值存入redis数据库

http://localhost:8080/redis/set?value=123

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值