• Redis的使用


    1、pom.xm

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

    2、application.properties

    # REDIS (RedisProperties)
    # Redis数据库索引(默认为0)
    spring.redis.database=0  
    # Redis服务器地址
    spring.redis.host=127.0.0.1
    # Redis服务器连接端口
    spring.redis.port=6379  
    # Redis服务器连接密码(默认为空)
    spring.redis.password=
    # 连接池最大连接数(使用负值表示没有限制)
    spring.redis.pool.max-active=8  
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.pool.max-wait=-1  
    # 连接池中的最大空闲连接
    spring.redis.pool.max-idle=8  
    # 连接池中的最小空闲连接
    spring.redis.pool.min-idle=0  
    # 连接超时时间(毫秒)
    spring.redis.timeout=0  

    3.RedisConfig.class

    package com.redis.config;
    
    import org.springframework.cache.CacheManager;
    import org.springframework.cache.annotation.CachingConfigurerSupport;
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.cache.interceptor.KeyGenerator;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.cache.RedisCacheManager;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.RedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    import java.lang.reflect.Method;
    
    
    @Configuration
    @EnableCaching
    public class RedisConfig extends CachingConfigurerSupport {
    
        @Bean
        public KeyGenerator wiselyKeyGenerator() {
            return new KeyGenerator() {
                @Override
                public Object generate(Object target, Method method, Object... params) {
                    StringBuilder sb = new StringBuilder();
                    sb.append(target.getClass().getName());
                    sb.append(method.getName());
                    for (Object obj : params) {
                        sb.append(obj.toString());
                    }
                    return sb.toString();
                }
            };
    
        }
    
        @Bean
        public CacheManager cacheManager(
                @SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
            return new RedisCacheManager(redisTemplate);
        }
    
        @Bean
        public RedisTemplate<String, Object> redisTemplate(
                RedisConnectionFactory factory) {
            RedisTemplate<String, Object> template = new RedisTemplate<>();
            template.setConnectionFactory(factory);
            RedisSerializer<String> keySerializer = new StringRedisSerializer();
            template.setKeySerializer(keySerializer);
            template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
            template.afterPropertiesSet();
            return template;
        }
    }

    4、Redis共同方法

    4.1 指定缓存失效时间

     /**
         * 指定缓存失效时间
         * 如果没有存在的key,也不会报错
         * @throws Exception
         */
        @Test
        public void test1() throws Exception {
            Boolean expire = redisTemplate.expire(SAVEKEY, 60, TimeUnit.SECONDS);
        }

    4.2  根据key 获取过期时间

     /**
         * 根据key 获取过期时间
         * 如果没有存在的key或者key没有设置过期时间,执行此方法不会报错,而是返回0
         * @throws Exception
         */
        @Test
        public void test2() throws Exception {
            Long aLong = redisTemplate.getExpire(SAVEKEY, TimeUnit.SECONDS);
            System.out.println("过期时间" + aLong);
        }

    4.3  判断key是否存在

    /**
         * 判断key是否存在
         * @throws Exception
         */
        @Test
        public void test3() throws Exception {
            Boolean aBoolean = redisTemplate.hasKey(SAVEKEY);
            System.out.println(aBoolean);
        }

    4.4  删除缓存(删除单个key)

    /**
         * 删除缓存(删除单个key)
         * @throws Exception
         */
        @Test
        public void test4() throws Exception {
            redisTemplate.delete(SAVEKEY);
        }

    4.5  删除缓存(删除多个key)

    /**
         * 删除缓存(删除多个key)
         * @throws Exception
         */
        @Test
        public void test5() throws Exception {
            String key[] = {SAVEKEY,SAVEKEY1};
            redisTemplate.delete(CollectionUtils.arrayToList(key));
        }

    5、String

    5.1  普通缓存获取

    /**
         * 普通缓存获取
         * @throws Exception
         */
        @Test
        public void test6() throws Exception {
            Object result = redisTemplate.opsForValue().get(SAVEKEY);
            System.out.println(result);
        }

    5.2  普通缓存放入

    /**
         * 普通缓存放入
         * @throws Exception
         */
        @Test
        public void test7() throws Exception {
            redisTemplate.opsForValue().set(SAVEKEY, "111");
            redisTemplate.opsForValue().set(SAVEKEY1, "222");
        }

    5.3  普通缓存放入并设置时间

     /**
         * 普通缓存放入并设置时间
         * @throws Exception
         */
        @Test
        public void test8() throws Exception {
            redisTemplate.opsForValue().set(SAVEKEY, "111", 60, TimeUnit.SECONDS);
        }

    5.4  递增(要增加几(大于0))

    /**
         * 递增(要增加几(大于0))
         * @throws Exception
         */
        @Test
        public void test9() throws Exception {
            Long increment = redisTemplate.opsForValue().increment(SAVEKEY, 5);
            System.out.println(increment);
        }

    5.5  递减(要减少几(小于0))

     /**
         * 递减(要减少几(小于0))
         * @throws Exception
         */
        @Test
        public void test10() throws Exception {
            Long increment = redisTemplate.opsForValue().increment(SAVEKEY, -5);
            System.out.println(increment);
        }

     6、Map

    6.1 HashSet(将map放入缓存)

    /**
         * HashSet(将map放入缓存)
         * @throws Exception
         */
        @Test
        public void test11() throws Exception {
            Map<String,Object> map = new HashMap<>();
            map.put("aaa","111");
            map.put("bbb","222");
            map.put("ccc","333");
            map.put("ddd","444");
            map.put("eee","555");
            redisTemplate.opsForHash().putAll(SAVEKEY, map);
        }

    6.2 获取hashKey对应的所有键值

    /**
         * 获取hashKey对应的所有键值
         * @throws Exception
         */
        @Test
        public void test12() throws Exception {
            Map map = redisTemplate.opsForHash().entries(SAVEKEY);
            System.out.println(map);
        }

    6.3 HashSet 并设置时间(将map放入缓存并设置时间)

    /**
         * HashSet 并设置时间(将map放入缓存并设置时间)
         * @throws Exception
         */
        @Test
        public void test13() throws Exception {
            Map<String,Object> map = new HashMap<>();
            map.put("aaa","111");
            map.put("bbb","222");
            map.put("ccc","333");
            map.put("ddd","444");
            map.put("eee","555");
            redisTemplate.opsForHash().putAll(SAVEKEY, map);
            redisTemplate.expire(SAVEKEY,60,TimeUnit.SECONDS);
        }

    6.4 HashGet(获取map中指定key的值)

     /**
         * HashGet(获取map中指定key的值)
         * @throws Exception
         */
        @Test
        public void test14() throws Exception {
            Object result = redisTemplate.opsForHash().get(SAVEKEY, "aaa");
            System.out.println(result);
        }

    6.5 向一张hash表中放入数据,如果不存在将创建,如果存在,则改变它的值(向map中再添加数据)

     /**
         * 向一张hash表中放入数据,如果不存在将创建,如果存在,则改变它的值(向map中再添加数据)
         * @throws Exception
         */
        @Test
        public void test15() throws Exception {
            redisTemplate.opsForHash().put(SAVEKEY, "fff", "666");
        }

    6.6 向一张hash表中放入数据,如果不存在将创建,如果存在,则改变它的值,并且设置有效时间(向map中再添加数据)

    /**
         * 向一张hash表中放入数据,如果不存在将创建,如果存在,则改变它的值,并且设置有效时间(向map中再添加数据)
         * @throws Exception
         */
        @Test
        public void test16() throws Exception {
            redisTemplate.opsForHash().put(SAVEKEY, "fff", "666");
            redisTemplate.expire(SAVEKEY,60,TimeUnit.SECONDS);
        }

    6.7 删除hash表中的值(删除map中的一个值或多个值)

     /**
         * 删除hash表中的值(删除map中的一个值或多个值)
         * @throws Exception
         */
        @Test
        public void test17() throws Exception {
            //删除单个
            redisTemplate.opsForHash().delete(SAVEKEY, "fff");
            //删除多个
            List<String> list = new ArrayList<>();
            list.add("ddd");
            list.add("eee");
            redisTemplate.opsForHash().delete(SAVEKEY, list.toArray());
        }

    6.8 判断hash表中是否有该项的值(判断map中是否存在这样的一个值)

     /**
         * 判断hash表中是否有该项的值(判断map中是否存在这样的一个值)
         * @throws Exception
         */
        @Test
        public void test18() throws Exception {
            Boolean result = redisTemplate.opsForHash().hasKey(SAVEKEY, "ccc");
            Boolean result1 = redisTemplate.opsForHash().hasKey(SAVEKEY, "fff");
            System.out.println(result);
            System.out.println(result1);
        }

    6.9 hash递增 如果不存在,就会创建一个 并把新增后的值返回

    /**
         * hash递增 如果不存在,就会创建一个 并把新增后的值返回
         * @throws Exception
         */
        @Test
        public void test19() throws Exception {
            redisTemplate.opsForHash().increment(SAVEKEY, "ddd", 5);
        }

    6.10 hash递减

    /**
         * hash递减
         * @throws Exception
         */
        @Test
        public void test20() throws Exception {
            redisTemplate.opsForHash().increment(SAVEKEY, "ddd", -5);
        }

    7、Set

    7.1 将set数据放入缓存

    /**
         * 将set数据放入缓存
         * @throws Exception
         */
        @Test
        public void test21() throws Exception {
            Set set = new HashSet();
            set.add("aaa");
            set.add("bbb");
            set.add("ccc");
            redisTemplate.opsForSet().add(SAVEKEY, set.toArray());
        }

    7.2 根据key获取Set中的所有值

     /**
         * 根据key获取Set中的所有值
         * @throws Exception
         */
        @Test
        public void test22() throws Exception {
            Set set = redisTemplate.opsForSet().members(SAVEKEY);
            set.forEach(o -> System.out.println(o));
        }

    7.3 根据value从一个set中查询,是否存在

     /**
         * 根据value从一个set中查询,是否存在
         * @throws Exception
         */
        @Test
        public void test23() throws Exception {
            Boolean result = redisTemplate.opsForSet().isMember(SAVEKEY, "aaa");
            System.out.println(result);
        }

    7.4 将数据放入set缓存

    /**
         * 将数据放入set缓存
         * @throws Exception
         */
        @Test
        public void test24() throws Exception {
            redisTemplate.opsForSet().add(SAVEKEY, "ddd");
        }

    7.5 获取set缓存的长度

    /**
         * 获取set缓存的长度
         * @throws Exception
         */
        @Test
        public void test25() throws Exception {
            Long size = redisTemplate.opsForSet().size(SAVEKEY);
            System.out.println("set缓存的长度" + size);
        }

    7.6 移除值为value的

    /**
         * 移除值为value的
         * @throws Exception
         */
        @Test
        public void test26() throws Exception {
            redisTemplate.opsForSet().remove(SAVEKEY, "ddd");
        }
  • 相关阅读:
    android之wifi开发
    android wifi讲解 wifi列表显示
    jQuery格式化时间插件formatDate
    Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)
    Android圆形图片自定义控件
    Android自定义控件
    SQL表连接查询(inner join、full join、left join、right join)
    Jquery 中each循环嵌套的使用示例教程
    JQuery遍历json数组的3种方法
    怎样从数据库层面检測两表内容的一致性
  • 原文地址:https://www.cnblogs.com/jcjssl/p/9468677.html
Copyright © 2020-2023  润新知