首頁 > 資料庫 > Redis > 主體

Springboot整合Redis實例分析

王林
發布: 2023-05-29 22:27:27
轉載
583 人瀏覽過

依賴套件

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
登入後複製

設定檔(application.properties)

# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=x.x.x.x
# Redis服务器连接端口
spring.redis.port=6738
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接超时时间(毫秒)
spring.redis.timeout=10000
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1ms
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
登入後複製

設定檔(RedisConfig.java)

package com.gxr.dmsData.config;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.text.SimpleDateFormat;

/**
 * @author :gongxr
 * @description: 自定义RedisTemplate
 * @date :Created in 2021/6/30
 */
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 修改key的默认序列化器为 string
        RedisSerializer<String> stringRedisSerializer = new StringRedisSerializer();
        redisTemplate.setDefaultSerializer(stringRedisSerializer);

        // 自定义 对象转换
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        Jackson2JsonRedisSerializer<Object> valueSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        valueSerializer.setObjectMapper(objectMapper);
//        redisTemplate.setValueSerializer(valueSerializer);
//        redisTemplate.setHashValueSerializer(valueSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}
登入後複製

測試程式碼

import com.gxr.dmsData.common.BaseTest;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;

import java.util.Set;

/**
 * @author :gongxr
 * @description:
 * @date :Created in 2021/6/30
 */
@Slf4j
public class TestRedis extends BaseTest {
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * RedisTemplate中定义了对5种数据结构操作
     * redisTemplate.opsForValue();//操作字符串
     * redisTemplate.opsForHash();//操作hash
     * redisTemplate.opsForList();//操作list
     * redisTemplate.opsForSet();//操作set
     * redisTemplate.opsForZSet();//操作有序set
     */
    @Test
    public void testRedisGet() {
        String key = "adviceCalculateTime";
        Boolean b = redisTemplate.hasKey(key);
        log.info("key是否存在:{}", b);
        Object o = redisTemplate.boundValueOps(key).get();
        log.info(redisTemplate.toString());
        log.info("查询结果:{}", o);
    }

    /**
     * map类型
     */
    @Test
    public void testRedisHash() {
        String key = "RRS_CURRENCY_CACHE";
        Object o = redisTemplate.boundHashOps(key).get("590");
        log.info("查询结果:{}", o.toString());
    }

    /**
     * set类型
     */
    @Test
    public void testRedisSet() {
        String key = "goodsDataSyncSkc:set";
        Set set = redisTemplate.boundSetOps(key).members();
        log.info("查询结果:{}", set.size());
        String s = (String) redisTemplate.boundSetOps(key).randomMember();
        log.info("查询结果:{}", s);
    }

}
登入後複製

以上是Springboot整合Redis實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!