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"); }