不少大型网站都会做数据缓存,当收到前端发来的请求后,首先去缓存里查数据,如果缓存里找不到的话再去数据库中查询,最后把查询到的数据放入到缓存中。
常见的缓存中间件有redis、Memcache等等,今天就讲一下springboot整合redis的步骤。
安装redis
本人采用docker容器化部署实在是太快了,只需要写一个简单的docker-compose.yml文件就能拉取下最新的镜像并且运行成功,当然更简单的话连docker-compose都不需要用,直接命令行用docker部署。不过还是建议用docker-compose部署,部署容器多了的话比较容易管理。
docker-compose.yml配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
version: '3' services: redis: image: redis:latest container_name: redis restart: always ports: - 6379:6379 volumes: - ./data/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw - ./data/redis/data:/data:rw command: /bin/bash -c "redis-server /usr/local/etc/redis/redis.conf " networks: blog_network: networks: blog_network:
|
1
|
docker-compose up -d #使用此命令即可启动了
|
redis有16个数据库,默认在0号数据库上操作。redis支持身份认证,默认是没有密码的,可以通过以下命令设置密码。
1
|
config set requirepass 123456 #“123456” 此处填你的密码
|
redis支持五种数据类型,分别是String、Hash、List、Set、Zset。默认的数据类型是String,个人用的最多的也是这个,当你犹豫不决用什么数据类型时,试试String吧。
SpringBoot整合redis
没什么好说的,都是傻瓜式操作。
maven引入依赖
1 2 3 4
|
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
|
代码操作
spring已经给我们封装好了各种对redis的操作,我们只需要使用RedisTemplate对象即可。
可以直接在service层注入RedisTemplate对redis进行操作,个人比较习惯封装成工具类,提高代码美化和可读性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class RedisUtil { @Autowired private RedisTemplate<String,String> redisTemplate;
public String get(String key){ return redisTemplate.opsForValue().get(key); }
public void set(String key,String value){ redisTemplate.opsForValue().set(key,value,1, TimeUnit.DAYS);#可以设置过期时间 }
public boolean exist(String key){ return redisTemplate.hasKey(key); } }
|
以下是redis源码中关于配置文件的默认配置
1 2 3 4 5 6 7 8 9 10 11 12
|
private int database = 0; private String url; private String host = "localhost"; private String password; private int port = 6379; private boolean ssl; private Duration timeout; private String clientName; private RedisProperties.Sentinel sentinel; private RedisProperties.Cluster cluster; private final RedisProperties.Jedis jedis = new RedisProperties.Jedis(); private final RedisProperties.Lettuce lettuce = new RedisProperties.Lettuce();
|
可以看到默认redis的ip是本地,如果你是在本地调试的话,需要重新配置host参数。
默认端口是6379,如果你改变的话也是需要在springboot的配置文件下配置的。
总的来说springboot整合redis不难,它把方法都给你封装好了,只需要调用即可。