博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot集成Redis
阅读量:5356 次
发布时间:2019-06-15

本文共 6167 字,大约阅读时间需要 20 分钟。

1、引入 spring-boot-starter-redis

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

 

2、application.yml配置redis信息

spring:  redis:        host: 127.0.0.1        port: 6379        password:         pool:          max-active: 100          max-idle: 10          max-wait: 100000        timeout: 0

3、集成Redis
基于JedisPool配置,使用RedisTemplate来操作redis的方式。

a、RedisConfig.java

package com.lynch.redis;import java.lang.reflect.Method;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.cache.interceptor.KeyGenerator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;import redis.clients.jedis.JedisPoolConfig;@Configuration@EnableAutoConfigurationpublic class RedisConfig  {    /**     * 获取JedisPoolConfig配置     *      * @return     */    @Bean    @ConfigurationProperties(prefix = "spring.redis.pool")    public JedisPoolConfig getRedisConfig(){        JedisPoolConfig config = new JedisPoolConfig();        return config;    }    /**     * 获取JedisConnectionFactory工厂     *      * @return     */    @Bean    @ConfigurationProperties(prefix = "spring.redis")    public JedisConnectionFactory getConnectionFactory() {        JedisConnectionFactory factory = new JedisConnectionFactory();        factory.setUsePool(true);        JedisPoolConfig config = getRedisConfig();        factory.setPoolConfig(config);        return factory;    }    /**     * 获取RedisTemplate模板     *      * @return     */    @Bean    public RedisTemplate
getRedisTemplate() { JedisConnectionFactory factory = getConnectionFactory(); RedisTemplate
template = new StringRedisTemplate(factory); return template; } }

@Configuration注解 用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

@EnableAutoConfiguration注解

启用Spring应用程序上下文的自动配置,尝试猜测和配置您可能需要的bean。自动配置类通常基于类路径和定义的bean应用。

@ConfigurationProperties注解

用于读取配置文件的信息,在这里是读取配置在yml里的redis的相关配置项。

@Bean注解

用在方法上,告诉Spring容器,你可以从下面这个方法中拿到一个Bean

b、RedisService.java

package com.lynch.redis;public interface RedisService {    /**     * set存数据     * @param key     * @param value     * @return     */    boolean set(String key, String value);    /**     * get获取数据     * @param key     * @return     */    String get(String key);    /**     * 设置有效天数     * @param key     * @param expire     * @return     */    boolean expire(String key, long expire);    /**     * 移除数据     * @param key     * @return     */    boolean remove(String key);}

c、RedisServiceImpl.java

package com.lynch.redis;import java.util.concurrent.TimeUnit;import javax.annotation.Resource;import org.springframework.dao.DataAccessException;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisCallback;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.stereotype.Service;@Servicepublic class RedisServiceImpl implements RedisService {    @Resource    private RedisTemplate
redisTemplate; @Override public boolean set(final String key, final String value) { boolean result = redisTemplate.execute(new RedisCallback
() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer
serializer = redisTemplate.getStringSerializer(); connection.set(serializer.serialize(key), serializer.serialize(value)); return true; } }); return result; } @Override public String get(final String key) { String result = redisTemplate.execute(new RedisCallback
() { @Override public String doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer
serializer = redisTemplate.getStringSerializer(); byte[] value = connection.get(serializer.serialize(key)); return serializer.deserialize(value); } }); return result; } @Override public boolean expire(final String key, long expire) { return redisTemplate.expire(key, expire, TimeUnit.SECONDS); } @Override public boolean remove(final String key) { boolean result = redisTemplate.execute(new RedisCallback
() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { connection.del(key.getBytes()); return true; } }); return result; }}

 

4、Redis测试

package com.lynch.config;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import com.lynch.redis.RedisService;@RunWith(SpringRunner.class)@SpringBootTestpublic class RedisServiceTest {    @Autowired    private RedisService redisService;        @Test    public void contextLoads() {    }        @Test    public void setString() {        redisService.set("redis_string_test", "springboot redis!中国");    }        @Test    public void getString() {        String result = redisService.get("redis_string_test");        System.out.println(result);    }        @Test    public void remove() {         System.out.println(redisService.remove("redis_string_test"));    } }

 

 

转载于:https://www.cnblogs.com/linjiqin/p/9695100.html

你可能感兴趣的文章
代理网站
查看>>
Open multiple excel files in WebBrowser, only the last one gets activated
查看>>
FFmpeg进行视频帧提取&音频重采样-Process.waitFor()引发的阻塞超时
查看>>
最近邻与K近邻算法思想
查看>>
【VS开发】ATL辅助COM组件开发
查看>>
FlatBuffers In Android
查看>>
《演说之禅》I & II 读书笔记
查看>>
thinkphp3.2接入支付宝支付接口(PC端)
查看>>
response和request
查看>>
【转】在Eclipse中安装和使用TFS插件
查看>>
回到顶部浮窗设计
查看>>
C#中Monitor和Lock以及区别
查看>>
【NOIP2017】奶酪
查看>>
$ 一步一步学Matlab(3)——Matlab中的数据类型
查看>>
5.6.3.7 localeCompare() 方法
查看>>
Linux下好用的简单实用命令
查看>>
常用web字体的使用指南
查看>>
描绘应用程序级的信息
查看>>
poj2406-Power Strings
查看>>
2018/12/18 JS会像Linux一样改变编程
查看>>