1、Maven依赖引入:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2、首先在你的SpringBoot工程中找到你的application.properties 文件。向里面添加如下配置:#--------幻腾寂埒-----------------------------Redis配置信息start----------------------#指定几号数据库spring.redis.database = 0#Redis服务器地址spring.redis.host = localhost#Redis服务器连接端口spring.redis.port = 6379# Redis服务器连接密码(默认为空)spring.redis.password =# 连接超时时间(毫秒)spring.redis.timeout = 5000# 连接池最大连接数(使用负值表示没有限制)spring.redis.jedis.pool.max-active=600# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.jedis.pool.max-wait=1000# 连接池中的最大空闲连接spring.redis.jedis.pool.max-idle=8# 连接池中的最小空闲连接spring.redis.jedis.pool.min-idle=0#-------------------------------------Redis配置信息end----------------------
3、然后写一个RedisUtils的工具类,网上很多粘一个就行,这里我只是简单的放了几个方法。@Componentpublic class RedisUtils { @Resource private RedisTemplate<String, String> redisTemplate; /** * 指定缓存失效时间 * * @param key 键 * @param time 时间(秒) * @return */ public boolean expire(String key, long time) { try { if (time > 0) { redisTemplate.expire(key, time, TimeUnit.SECONDS); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 根据key 获取过期时间 * * @param key 键 不能为null * @return 时间(秒) 返回0代表为永久有效 */ public long getExpire(String key) { return redisTemplate.getExpire(key, TimeUnit.SECONDS); } /** * 判断key是否存在 * * @param key 键 * @return true 存在 false不存在 */ public boolean hasKey(String key) { try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 删除缓存 * * @param key 可以传一个值 或多个 */ @SuppressWarnings("unchecked") public void del(String... key) { if (key != null && key.length > 0) { if (key.length == 1) { redisTemplate.delete(key[0]); } else { redisTemplate.delete(CollectionUtils.arrayToList(key)); } } } //============================String============================= /** * 普通缓存获取 * * @param key 键 * @return 值 */ public Object get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); } /** * 普通缓存放入 * * @param key 键 * @param value 值 * @return true成功 false失败 */ public boolean set(String key, String value) { try { redisTemplate.opsForValue().set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 普通缓存放入并设置时间 * * @param key 键 * @param value 值 * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 * @return true成功 false 失败 */ public boolean set(String key, String value, long time) { try { if (time > 0) { redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); } else { set(key, value); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 递增 * * @param key 键 * @param delta 要增加几(大于0) * @return */ public long incr(String key, long delta) { if (delta < 0) { throw new RuntimeException("递增因子必须大于0"); } return redisTemplate.opsForValue().increment(key, delta); } /** * 递减 * * @param key 键 * @param delta 要减少几(小于0) * @return */ public long decr(String key, long delta) { if (delta < 0) { throw new RuntimeException("递减因子必须大于0"); } return redisTemplate.opsForValue().increment(key, -delta); }}
4、然后。。。。然后就可以了啊简单吧。但是没有那么简单上面我们写的是0号的数据库,现在我们测试使用的是3号数据库(大家在用的时候按照业务需求就好)
5、我们写一个测试类用来添加:存入一个key=ceshi001value=123456的值
6、然后我们去看Redis数据库中是什么,看图为什么变成这样了呢。但是到此我们发现,Redis已经集成成功可以进行存储了。
7、我们来解决key值的问题:其实就是序列化的问题我们来建立一个RedisConfiguration的类,下面显示格式可能不对,直接粘贴使用就好。但是序列化的方式也有很多,可以自行百度。@Configurationpublic class RedisConfiguration { @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisFactory){ StringRedisTemplate template = new StringRedisTemplate(redisFactory); JdkSerializationRedisSerializer jdkSerializationRedisSerializer=new JdkSerializationRedisSerializer(); template.setValueSerializer(jdkSerializationRedisSerializer); template.afterPropertiesSet(); return template; }}
8、好我们再去运行一次:发现这次对了。其实就是序列化的问题,如果不写会有默认的序列化方式所以开发中如果遇到有两个工程中,去取同一个key值取到的确实null不用质疑你的Redis有问题,也不用质疑为什么别人能拿到。那就是key的序列化问题,你们的序列化方式要统一。(再说一下,一般公司开发会统一的不会遇到这样的问题,如果遇到了说明你们的开发不统一)