spring boot 结合Redis 实现工具类

自己整理了 spring boot 结合 Redis 的工具类

引入依赖


<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

加入配置


# Redis数据库索引(默认为0)

spring.redis.database=0

# Redis服务器地址

spring.redis.host=localhost

# Redis服务器连接端口

spring.redis.port=6379

 推荐一个交流学习群:614478470 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多


点击:加入


实现代码


这里用到了 静态类工具类中 如何使用 @Autowired

package com.lmxdawn.api.common.utils;

import java.util.Collection;

import java.util.Set;

import java.util.concurrent.TimeUnit;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.stereotype.Component;

/**

 * 缓存操作类

 */

@Component

public class CacheUtils {

    @Autowired

    private RedisTemplate<String, String> redisTemplate;

    // 维护一个本类的静态变量

    private static CacheUtils cacheUtils;

    @PostConstruct

    public void init() {

        cacheUtils = this;

        cacheUtils.redisTemplate = this.redisTemplate;

    }

    /**

     * 将参数中的字符串值设置为键的值,不设置过期时间

     * @param key

     * @param value 必须要实现 Serializable 接口

     */

    public static void set(String key, String value) {

        cacheUtils.redisTemplate.opsForValue().set(key, value);

    }

    /**

     * 将参数中的字符串值设置为键的值,设置过期时间

     * @param key

     * @param value 必须要实现 Serializable 接口

     * @param timeout

     */

    public static void set(String key, String value, Long timeout) {

        cacheUtils.redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);

    }

    /**

     * 获取与指定键相关的值

     * @param key

     * @return

     */

    public static Object get(String key) {

        return cacheUtils.redisTemplate.opsForValue().get(key);

    }

    /**

     * 设置某个键的过期时间

     * @param key 键值

     * @param ttl 过期秒数

     */

    public static boolean expire(String key, Long ttl) {

        return cacheUtils.redisTemplate.expire(key, ttl, TimeUnit.SECONDS);

    }

    /**

     * 判断某个键是否存在

     * @param key 键值

     */

    public static boolean hasKey(String key) {

        return cacheUtils.redisTemplate.hasKey(key);

    }

    /**

     * 向集合添加元素

     * @param key

     * @param value

     * @return 返回值为设置成功的value数

     */

    public static Long sAdd(String key, String... value) {

        return cacheUtils.redisTemplate.opsForSet().add(key, value);

    }

    /**

     * 获取集合中的某个元素

     * @param key

     * @return 返回值为redis中键值为key的value的Set集合

     */

    public static Set<String> sGetMembers(String key) {

        return cacheUtils.redisTemplate.opsForSet().members(key);

    }

    /**

     * 将给定分数的指定成员添加到键中存储的排序集合中

     * @param key

     * @param value

     * @param score

     * @return

     */

    public static Boolean zAdd(String key, String value, double score) {

        return cacheUtils.redisTemplate.opsForZSet().add(key, value, score);

    }

    /**

     * 返回指定排序集中给定成员的分数

     * @param key

     * @param value

     * @return

     */

    public static Double zScore(String key, String value) {

        return cacheUtils.redisTemplate.opsForZSet().score(key, value);

    }

    /**

     * 删除指定的键

     * @param key

     * @return

     */

    public static Boolean delete(String key) {

        return cacheUtils.redisTemplate.delete(key);

    }

    /**

     * 删除多个键

     * @param keys

     * @return

     */

    public static Long delete(Collection<String> keys) {

        return cacheUtils.redisTemplate.delete(keys);

    }

}


猜你喜欢

转载自blog.51cto.com/13919357/2322217