zoukankan      html  css  js  c++  java
  • springboot下整合redis使用redisTemplate模板

    pom

    <!-- 引入 redis 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    application-dev.yml

    #reids
    spring
      redis:
        host: 47.98.157.114
        port: 6379
        max-idle: 20
        max-total: 100
        max-wait-millis: 3000
        password: liuzhonghua

    工具类

    RedisOperator.java

    package com.lzh.utils;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.stereotype.Component;
    
    import java.util.Map;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    
    /**
     * @Description: 使用redisTemplate的操作实现类 
     */
    @Component
    public class RedisOperator {
        
    //    @Autowired
    //    private RedisTemplate<String, Object> redisTemplate;
        
        @Autowired
        private StringRedisTemplate redisTemplate;
        
        // Key(键),简单的key-value操作
    
        /**
         * 实现命令:TTL key,以秒为单位,返回给定 key的剩余生存时间(TTL, time to live)。
         * 
         * @param key
         * @return
         */
        public long ttl(String key) {
            return redisTemplate.getExpire(key);
        }
        
        /**
         * 实现命令:expire 设置过期时间,单位秒
         * 
         * @param key
         * @return
         */
        public void expire(String key, long timeout) {
            redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
        }
        
        /**
         * 实现命令:INCR key,增加key一次
         * 
         * @param key
         * @return
         */
        public long incr(String key, long delta) {
            return redisTemplate.opsForValue().increment(key, delta);
        }
    
        /**
         * 实现命令:KEYS pattern,查找所有符合给定模式 pattern的 key
         */
        public Set<String> keys(String pattern) {
            return redisTemplate.keys(pattern);
        }
    
        /**
         * 实现命令:DEL key,删除一个key
         * 
         * @param key
         */
        public void del(String key) {
            redisTemplate.delete(key);
        }
    
        // String(字符串)
    
        /**
         * 实现命令:SET key value,设置一个key-value(将字符串值 value关联到 key)
         * 
         * @param key
         * @param value
         */
        public void set(String key, String value) {
            redisTemplate.opsForValue().set(key, value);
        }
    
        /**
         * 实现命令:SET key value EX seconds,设置key-value和超时时间(秒)
         * 
         * @param key
         * @param value
         * @param timeout
         *            (以秒为单位)
         */
        public void set(String key, String value, long timeout) {
            redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
        }
    
        /**
         * 实现命令:GET key,返回 key所关联的字符串值。
         * 
         * @param key
         * @return value
         */
        public String get(String key) {
            return (String)redisTemplate.opsForValue().get(key);
        }
    
        // Hash(哈希表)
    
        /**
         * 实现命令:HSET key field value,将哈希表 key中的域 field的值设为 value
         * 
         * @param key
         * @param field
         * @param value
         */
        public void hset(String key, String field, Object value) {
            redisTemplate.opsForHash().put(key, field, value);
        }
    
        /**
         * 实现命令:HGET key field,返回哈希表 key中给定域 field的值
         * 
         * @param key
         * @param field
         * @return
         */
        public String hget(String key, String field) {
            return (String) redisTemplate.opsForHash().get(key, field);
        }
    
        /**
         * 实现命令:HDEL key field [field ...],删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
         * 
         * @param key
         * @param fields
         */
        public void hdel(String key, Object... fields) {
            redisTemplate.opsForHash().delete(key, fields);
        }
    
        /**
         * 实现命令:HGETALL key,返回哈希表 key中,所有的域和值。
         * 
         * @param key
         * @return
         */
        public Map<Object, Object> hgetall(String key) {
            return redisTemplate.opsForHash().entries(key);
        }
    
        // List(列表)
    
        /**
         * 实现命令:LPUSH key value,将一个值 value插入到列表 key的表头
         * 
         * @param key
         * @param value
         * @return 执行 LPUSH命令后,列表的长度。
         */
        public long lpush(String key, String value) {
            return redisTemplate.opsForList().leftPush(key, value);
        }
    
        /**
         * 实现命令:LPOP key,移除并返回列表 key的头元素。
         * 
         * @param key
         * @return 列表key的头元素。
         */
        public String lpop(String key) {
            return (String)redisTemplate.opsForList().leftPop(key);
        }
    
        /**
         * 实现命令:RPUSH key value,将一个值 value插入到列表 key的表尾(最右边)。
         * 
         * @param key
         * @param value
         * @return 执行 LPUSH命令后,列表的长度。
         */
        public long rpush(String key, String value) {
            return redisTemplate.opsForList().rightPush(key, value);
        }
    
    }
  • 相关阅读:
    2020Java面试题及答案,刷这些题,准没错!
    作为一个面试官,我想问问你Redis分布式锁怎么搞?
    你说研究过Spring里面的源码,循环依赖你会么?
    一口气说出 6种 延时队列的实现方案,面试稳稳的
    我可真是醉了,一个SpringBoot居然问了我30个问题
    最强Dubbo面试题,附带超级详细答案
    平安银行Java社招五面面经,目前最全面的,38个面试题以及答案
    Java电子书高清PDF集合免费下载
    Python处理json模块的详细介绍
    用Python写一个“离线语音提示器”来提醒我们别忘记了时间
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/9897007.html
Copyright © 2011-2022 走看看