12、SpringBoot中简单使用Redis

一、springboot集成redis只需要导入redis依赖的包即可



    org.springframework.boot
    spring-boot-starter-data-redis


二、在配置文件中添加redis的配置

#Redis相关配置
spring.redis.host=192.168.170.26
spring.redis.port=6379
#设置Redis的数据库,Redis数据库索引有16个(从0~15)默认是0
spring.redis.database=0
spring.redis.password=123456
spring.redis.timeout=5000
# 连接池中的最大空闲连接,默认值也是8。
spring.redis.jedis.pool.max-idle=500
# 连接池中的最小空闲连接,默认值也是0。
spring.redis.jedis.pool.min-idle=50
# 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)
spring.redis.jedis.pool.max-active=1000
# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
spring.redis.jedis.pool.max-wait=2000

三、创建一个Service类进行操作Redis

  • 在本示例中采用StringRedisTemplate进行相应的操作,在实际业务场景中使用最多的也是通过字符串的形式将数据存储在redis中,如果需要存储对象进去可以将对象转换成json串在进行处理,这样我们在获取到json串之后也能更好的转换成相应的对象,更好处理一些。同时StringRedisTemplate也提供了很多api,在实际业务场景中也可以根据相应的场景进行选择。
package com.example.serviceimpl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;

import java.time.Duration;
import java.util.List;

/**
 * Author: Chenly
 * Date: 2021-03-29 16:14
 * Description: Redis测试服务类
 */
@Service
public class RedisService {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 添加字符串形式的数据
     * @param key
     * @param value
     */
    public void setStringValue(String key,String value){
        ValueOperations valueOperations = stringRedisTemplate.opsForValue();
        valueOperations.set(key, value);
    }

    /**
     * 获取redis中的数据
     * @param key
     * @return
     */
    public String getStringValue(String key){
        return stringRedisTemplate.opsForValue().get(key);
    }

    /**
     * 添加list参数
     * @param key
     * @param value
     */
    public void setListValue(String key,String value){
        ListOperations list = stringRedisTemplate.opsForList();
        list.leftPush(key,value);
    }

    public List getListValue(String key){
        // 0~-1表示取所有的数据
        return stringRedisTemplate.opsForList().range(key,0,-1);
    }

    /**
     * 判断某个key是否存在
     * @param key
     * @return
     */
    public boolean keyExists(String key){
        return stringRedisTemplate.hasKey(key);
    }

    /**
     * 设置key的有效性时间
     * @param key
     * @param time 秒
     * @return
     */
    public boolean setTimeOut(String key,long time){
        return stringRedisTemplate.expire(key, Duration.ofSeconds(time));
    }
}

四、创建一个单元测试类进行测试

package com.example.sppringbootdemo;

import com.alibaba.fastjson.JSONObject;
import com.example.entry.UserEntry;
import com.example.service.UserService;
import com.example.serviceimpl.RedisService;
import com.example.springbootdemo.SpringBootDemoApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.List;

/**
 * Author: Chenly
 * Date: 2021-03-29 16:26
 * Description: Redis对接测试
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {SpringBootDemoApplication.class})
public class RedisTest {
    private static Logger log = LoggerFactory.getLogger(RedisTest.class);
    @Resource
    private RedisService redisService;
    @Autowired
    private UserService userService;

    /**
     * redis存入字符串场景
     */
    @Test
    public void testRedis(){
        redisService.setStringValue("test1","20210329");
        // 设置过期时间
        redisService.setTimeOut("test1",20);
        log.info("获取到的参数为:{}", redisService.getStringValue("test1"));
    }

    /**
     * redis存入对象场景,其实就是将对象转换为json字符串
     */
    @Test
    public void setEntry(){
        UserEntry userEntry = new UserEntry("测试","123456");
        String jsonStr = JSONObject.toJSONString(userEntry);
        redisService.setStringValue("user",jsonStr);
        log.info("获取到的数据为:{}", redisService.getStringValue("user"));
    }

    /**
     * 测试存入list数据
     */
    @Test
    public void setList(){
        redisService.setListValue("listStr","111");
        redisService.setListValue("listStr","222");

        List listData = redisService.getListValue("listStr");
        for (String str:listData) {
            log.info("获取到的listStr数据为:{}",str);
        }
    }

    /**
     * 测试key是否存在
     */
    @Test
    public void keyExists(){
        String key = "name1";
        boolean isExist = redisService.keyExists(key);
        if (isExist){
            String value = redisService.getStringValue(key);
            log.info("redis存在key,并获取到的值为:{}",value);
        }else{
            UserEntry userEntry = userService.getUser();
            log.info("从数据库获取相应的数据:{}",userEntry);
        }
    }
}

 

 

 

 

 

你可能感兴趣的:(Spring,boot学习,redis,java)