Redis 数据都是缓存在计算机内存中,会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化。
docker 方式安装 Redis
1. 启动docker:
systemctl start docker
2. 安装 redis (安装并启动一套完成)
docker run -id --name myredis(自定义名称) -p 6379:6379 redis
如果你的 docker 上没有安装过 redis , 则 docker 会自动帮你在仓库上拉取 redis 镜像 , 此过程需要等待下载完成
注意 ! ! !
会出现下载镜像速度太慢 , 拉半天拉不下来 , 可以配置成阿里云镜像仓库 , 直接百度阿里云官网 , 登录上去 , 找到镜像加速器地址 :
1. 修改 daemon配置文件来使用加速器 :
vi /etc/docker/daemon.json
2. 在配置文件中加入加速器地址 :
{"registry-mirrors": ["https://kwe1le51.mirror.aliyuncs.com"]}
3. 保存后,输入
systemctl daemon-reload
4. 重新启动 docker
systemctl restart docker
以上就是切换了 docker 的下载镜像地址 ( 使用阿里镜像 ) 之后 pull 的速度就会很快了
使用 docker ps 命令查看 redis(容器)是否启动
如果显示没有启动或者历史已经存在过该容器 , 且没有删除 , 我们直接重新启动一下该容器就可以了
命令 : docker restart 容器ID 或者 容器名
也可以使用 Redis Desktop Manager (Redis可视化工具) 查看 redis 的连接状态
docker 成功安装了 redis之后的操作
1. 后端服务pom中添加 redis 依赖
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- spring2.X集成redis所需common-pool2-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>
2. 添加 redis 配置类
@Configuration
@EnableCaching
public class RedisConfig {
/**
* 设置RedisTemplate规则
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
//解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//序列号key value
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
/**
* 设置CacheManager缓存规则
* @param factory
* @return
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
//解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
// 配置序列化(解决乱码的问题),过期时间600秒
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(600))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
.disableCachingNullValues();
RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
.cacheDefaults(config)
.build();
return cacheManager;
}
}
3. 你要使用的某后端服务中添加 redis 配置 ( application.properties 或者 yml 文件 )
spring.redis.host=192.168.xxx.xxx # 你自己的redis宿主机ip
spring.redis.port=6379 # redis端口号
spring.redis.database= 0
spring.redis.timeout=1800000
4. 运行测试类
@SpringBootTest
public class test111 {
@Autowired
RedisTemplate redisTemplate;
@Test
public void test1(){
redisTemplate.opsForValue().set("username", "卡卡罗特");
}
}
最后 , 成功将数据存入Redis 缓存中
可以通过可视化工具查看