Springboot+Redis整合
一、什么是redis
redis是现在最受欢迎的NoSQL(Not Only SQL)数据库之一,Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。使用C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
二、redis的特点
- Redis以内存作为数据存储介质,读写数据的效率极高。
- Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启,数据也不会丢失。
- Redis的存储分为内存存储、磁盘存储和log文件。
- Redis可以从磁盘重新将数据加载到内存中,也可以通过配置文件对其进行配置,因此,redis才能实现持久化。
- Redis支持主从模式,可以配置集群,更利于支撑大型的项目。
学习参考链接:
redis官网
什么是redis,redis能做什么,redis的应用场景
redis教程
三、Linux下安装Redis
Linux系统安装Redis(2020最新最详细) - 净重21克 - 博客园 (cnblogs.com)
redis常用命令
注意事项
1.centos7 关闭防火墙
sudo systemctl stop firewalld 临时关闭
sudo systemctl disable firewalld ,然后reboot 永久关闭
sudo systemctl status firewalld 查看防火墙状态。
#在redis.conf中修改
2. bind 127.0.0.1要注释掉
3.protected-mode yes改成protected-mode no
4. 要为redis配置密码
通过/requirepass foobared搜索到后将其注释打开,同时将foobared修改为你要给redis设置的密码
设置密码
5.带配置文件在后台启动命令
./redis-server /usr/local/redis-6.0.8/redis.conf&
四、整合
-
添加redis依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
-
配置redis连接
spring: redis: host: 192.168.110.130 password: 123 database: 1
-
编写redis配置类
/** * redis 配置类 */ @Configuration @SuppressWarnings("all") public class RedisConfig extends CachingConfigurerSupport { /** * 配置RedisTemplate * 设置添加序列化器 * key 使用string序列化器 * value 使用Json序列化器 * @param redisConnectionFactory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<String,Object> template=new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); // json序列化器 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer=new Jackson2JsonRedisSerializer(Object.class); ObjectMapper objectMapper=new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); // String序列化器 StringRedisSerializer stringRedisSerializer=new StringRedisSerializer(); // 给 key 使用 String的序列化方式 // 给 value 使用 Json的序列化方式 template.setKeySerializer(stringRedisSerializer); template.setValueSerializer(jackson2JsonRedisSerializer); // 给 hash 设置 template.setHashKeySerializer(stringRedisSerializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); return template; } }
-
编写redis工具类
@Component public class RedisUtil { @Resource private RedisTemplate redisTemplate; /** * 设置有效时间 * * @param key Redis键 * @param timeout 超时时间 * @return true=设置成功;false=设置失败 */ public boolean expire(final String key