最近在springboot中需要使用redis,特写此记录

首先在pom. 文件中引入redis包 

<dependency>
    <groupId>org.spring work.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
</dependency>

然后在application.yml中添加相关redis配置 

spring:
    redis:
        host: redis机器的IP
        password: redis设置的密码
        port: redis端口
        pool:
            max-idle: 100
            min-idle: 1
            max-active: 1000
            max-wait: -1

配置完成后需要写一个RedisConfig.java

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    /**
     * 生成key的策略
     * @return
     */
    @Bean
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public   generate(  target, Method method,  ... params) {
                StringBuilder sb = new StringBuilder();
                sb.append(target.getClass().getName());
                sb.append(method.getName());
                for (  obj : params) {
                    sb.append(obj.toString());
                }
                return sb.toString();
            }
        };
    }

    /**
     * 管理缓存
     */
    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
        return rcm;
    }

    /**
     * RedisTemplate配置
     */
    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        StringRedisTemplate template = new StringRedisTemplate(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer( .class);
         Mapper om = new  Mapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping( Mapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.set Mapper(om);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

然后可以开心的使用redis了

可以写一个封装类封装一些redis操作

/**
 * 封装操作redis的各种方法
 */
@Service
public class RedisService {
    @Autowired
    private RedisTemplate redisTemplate;
    /**
     * 写入缓存
     * @param key
     * @param value
     * @return
     */
    public boolean set(final String key,   value) {
        boolean result = false;
        try {
            ValueOperations<Serializable,  > operations = redisTemplate.opsForValue();
            operations.set(key, value);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    /**
     * 写入缓存设置时效时间
     * @param key
     * @param value
     * @return
     */
    public boolean set(final String key,   value, Long expireTime) {
        boolean result = false;
        try {
            ValueOperations<Serializable,  > operations = redisTemplate.opsForValue();
            operations.set(key, value);
            redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    /**
     * 批量删除对应的value
     * @param keys
     */
    public void remove(final String... keys) {
        for (String key : keys) {
            remove(key);
        }
    }

    /**
     * 批量删除key
     * @param pattern
     */
    public void removePattern(final String pattern) {
        Set<Serializable> keys = redisTemplate.keys(pattern);
        if (keys.size() > 0)
            redisTemplate.delete(keys);
    }
    /**
     * 删除对应的value
     * @param key
     */
    public void remove(final String key) {
        if (exists(key)) {
            redisTemplate.delete(key);
        }
    }
    /**
     * 判断缓存中是否有对应的value
     * @param key
     * @return
     */
    public boolean exists(final String key) {
        return redisTemplate.hasKey(key);
    }
    /**
     * 读取缓存
     * @param key
     * @return
     */
    public   get(final String key) {
          result = null;
        ValueOperations<Serializable,  > operations = redisTemplate.opsForValue();
        result = operations.get(key);
        return result;
    }
}

现在就可以在你的项目中愉快的使用redis啦

欢迎转载,但请说明出处,谢谢

收藏 打印