目录
一、Redis概述
二、Linux下使用Docker安装Redis
三、SpringBoot集成使用Redis
3.1 添加redis依赖
3.2 配置连接redis
3.3 实现序列化
3.4 注入RedisTemplate
3.5 测试
四、Redis数据结构
一、Redis概述
什么是redis?
redis 是一个高性能的,键值对的,将数据存储在内存中的非关系型数据库。
redis 也可以将数据持久化到硬盘上,此外 redis 也提供了丰富的数据结构存储数据。
redis 也可以用来当做数据库,可以存储一些简单的数据(例如点赞数量),缓存(秒杀的商品数量信息),消息中间件。
- 高性能:数据存储在内存中,直接访问内存,性能极高,速度快。
- 键值对:如 { id:1 , name:小林 , age:20 }
- 非关系型:数据存储是键值对的,没有二维表关系,不使用sql操作。
redis的作用:使用 redis 作为缓存,将一些访问量大或者修改较少的数据使用 redis 存储起来,对mysql形成保护。
二、Linux下使用Docker安装Redis
创建配置文件
mkdir -p /opt/redis/conf
创建数据的映射(数据卷)
mkdir -p /opt/redis/data
拉取镜像
docker pull redis:6.0
安装
docker run -d -p 6379:6379 --name redis --restart=always --privileged=true -v /opt/redis/conf/redis.conf:/etc/redis/redis.conf -v /opt/redis/data:/data redis:6.00
由于今年6月Docker Hub对国内的封锁,终止了对镜像仓库的访问和拉取。所以若拉取镜像失败,可以私信博主,通过加载本地镜像即可!
三、SpringBoot集成使用Redis
原理:使用Springboot 对 Jedis 的封装实现。
管理连接Redis对象,提供数据库连接池功能。
针对每种数据结构分别封装不同的实现类。
事务。
提供了对键,值进行序列化和反序列化操作。
3.1 添加redis依赖
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
💥如图所示:
3.2 配置连接redis
spring:
redis:
host: 192.168.31.128
port: 6379
password: 123
database: 0
pool:
max-active: 8 #连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms #连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 8 #连接池中的最大空闲连接
min-idle: 0 #连接池中的最小空闲连接
timeout: 5000ms #连接超时时间(毫秒)
💥如图所示:
3.3 实现序列化
在config包下创建一个RedisConfig类,复制如下代码即可:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
/**
* 序列化键,值
* @param connectionFactory
* @return
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(connectionFactory);
//序列化策略
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
StringRedisSerializer redisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(redisSerializer);//key 单一的字符串
redisTemplate.setHashKeySerializer(redisSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);//value {}
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
return redisTemplate;
}
}
💥如图所示:
3.4 注入RedisTemplate
@Autowired
RedisTemplate redisTemplate;
💥如图所示:
3.5 测试
我们临时在web层创建一个测试类,从前端发送请求进行测试:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(path = "/redisCtl")
public class RedisTest {
@Autowired
RedisTemplate redisTemplate;
@RequestMapping(path = "/test1")
public void test1(){
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set("name", "jim");
}
}
💥如图所示:
💥从浏览器访问:
💥键值添加成功!
四、Redis数据结构
5种基本常用结构
Redis中的键都是字符串类型,这里的数据结构指的是值的结构。
redis常用的五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及zset(有序集合)。
底层实现:
本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见
博主wx:g2279605572