springboot+redis系列(二)jedis操作String类型数据

小弟也是初学者,若有问题,各位大佬指点指点
本系列目录

本章为springboot+redis系列第二节,主要jedis操作String类型数据

1.application.yml配置

server:
  port: 8081
spring:
  redis:
    port: 6379
#    password:
    #没有设置密码,必须要去掉配置,否则连接不上redis
    host: 127.0.0.1
    jedis:
      pool:
        max-active: 10 #最大连接数
        max-idle: 6 #最大空闲数
        min-idle: 2 #最小空闲数
    timeout: 2000 #连接超时

2.JedisPool配置

package cn.hui.redis2.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;

/**
 * @Author Administrator
 * @create 2020/7/10 19:49
 */
@Configuration
public class JedisConfig {
    //创建日志
    private Logger logger = LoggerFactory.getLogger(JedisConfig.class);

    //@Value相当于,从application.yml文件的配置获取配置信息,给定义的变量赋值
    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;
//没有设置密码
//    @Value("${spring.redis.password}")
//    private String password;

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

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

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

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

    @Bean
    public JedisPool jedisPool(){
        //创建jedis连接池,配置
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMinIdle(minIdle);
        jedisPoolConfig.setMaxTotal(maxActive);

        //创建新jedisPool对象,未设置密码
        JedisPool jedisPool = new JedisPool(jedisPoolConfig,host,port,timeout);

        //项目启动的时候,会在控制台显示(第三行)
        logger.info("jedis连接池连接成功"+host+"\t"+port);

        return jedisPool;
    }

}

3.业务接口,接口实现类

package cn.hui.redis2.service;

/**
 * @Author Administrator
 * @create 2020/7/11 10:51
 */
public interface UserService {

	//根据输入的key查询对应的 String类型的vlaue
    public String getString(String key);
}
package cn.hui.redis2.service.imp;

import cn.hui.redis2.service.UserService;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 * @Author Administrator
 * @create 2020/7/11 10:52
 */
@Service
@Log //private Logger logger = LoggerFactory.getLogger(JedisConfig.class);
public class UserServiceImp implements UserService {
    @Autowired
    private JedisPool jedisPool;

    @Override
    public String getString(String key) {

        //创建key对应的变量
        String val = null;

        //1.得到jedis对象
        Jedis jedis = jedisPool.getResource();

        //2.判断此key是否在Redis中
        if (jedis.exists(key)){
            log.info("查询redis中数据");
            val = jedis.get(key);
        }else {
            val = "数据库"+key;
            log.info("模拟数据库查的"+val);
            jedis.set(key,val);

        }

        //3.关闭连接
        jedis.close();
        return val;


    }
}

4.测试类测试
不同之处:看控制台输出的日志

package cn.hui.redis2;

import cn.hui.redis2.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest
class Redis2ApplicationTests {

    @Autowired
    private UserService userService;


    @Test
    void contextLoads() {

    }

    //操作String类型的数据
    /**
     * 根据redis里是否存在key为"n2"的数据
     * 若有返回redis查询的值
     * 若无,查询数据库的值,并向Redis添加值
     * */
    @Test
    void t1(){
        String result = userService.getString("n2");
        System.out.println(result);
    }

}

运行第一次:

2020-07-11 12:25:30.456  INFO 5444 --- [           main] c.hui.redis2.service.imp.UserServiceImp  : 模拟数据库查的数据库n2
数据库n2

运行第二次:

2020-07-11 12:42:00.482  INFO 11828 --- [           main] c.hui.redis2.service.imp.UserServiceImp  : 查询redis中数据
数据库n2

附有Git项目源码,点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值