spring-boot从入门到精通|集成redis

redis介绍

Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列。

  • Redis的特点:
    Redis存在于内存,使用硬盘作为持久化;每秒十万读写。
    具有丰富的数据结构,字符串、哈希表、列表、集合、有序集合;提供交集、并集、差集等操作。
    设置TTL存活时间,到期自动删除。
    Redis单线程、Memcached多线程;对于一般的应用场景,单线程也足够使用,优势还是在于多数据类型、持久化。
    可以将数据复制到任意数量的从服务器。
    https://baike.baidu.com/item/Redis/6549233?fr=aladdin#5

java操作redis

  • 1、在pom.xml文件中加入Redis包
      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>1.5.8.RELEASE</version>
        </dependency>
  • 2、SpringBoot配置文件中配置Redis连接(properties方式配置)

  • 1、简单的配置

spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.pool.max-active=1000
  • 2、一主三从配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.timeout=20000
spring.redis.cluster.nodes=192.168.1.115:8000,192.168.1.115:8001,192.168.1.115:8002
spring.redis.cluster.maxRedirects=6
spring.redis.pool.max-active=1000
spring.redis.pool.min-idle=0
spring.redis.pool.max-wait=-1

-3、redis操作工具类



/**
 * 通过Redis存储和验证token的实现类
 *
 * @author ScienJus
 * @date 2015/7/31.
 * @see com.yiba.vpn.authorization.manager.TokenManager
 */
@Component
public class RedisTokenManager {

    private RedisTemplate<String, String> redis;


    @Autowired
    public void setRedis(RedisTemplate redisTemplate) {
        this.redis = redisTemplate;
        //泛型设置成Long后必须更改对应的序列化方案
        redis.setKeySerializer(new JdkSerializationRedisSerializer());
    }


    /**
     * 根据key删除值
     * @param key
     */
    public void deleteKey(String key) {
        redis.delete(key);
    }

    public void expireValue(String key, long time, TimeUnit timeUnit) {
        //如果验证成功,说明此用户进行了一次有效操作,延长token的过期时间
        redis.boundValueOps(key).expire(time, timeUnit);
    }


    /**
     * 存储key~value
     *
     * @param key
     * @param value
     * @param time
     */
    public void addValue(String key, String value, long time, TimeUnit timeUnit) {
        redis.boundValueOps(key).set(value, time, timeUnit);
    }


    /**
     * 根据key获取参数值
     *
     * @param key
     * @return
     */
    public String getValue(String key) {
        return redis.boundValueOps(key).get();
    }


    /**
     * 获取redis剩余生存时间(如果过期返回-2,其他都返回0)
     */
    public Long ttlKey(String key) {
        return redis.getExpire(key);
    }


    /**
     * 指定时间类型---秒
     *
     * @param key
     * @return
     */
    public long getExpireTimeType(String key) {
        long time = redis.getExpire(key, TimeUnit.SECONDS);
        return time;
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容