学习springboot的旅程,就像蜗牛爬山,一点点的往上爬,一点点的欣赏旅途的风景
继续上一章的故事,小猿摸了摸光秃秃的脑袋,心想百来号人同时去数据库加载菜单数据,不慢才怪呢!但是怎样才能解决呢?压力都在数据库?怎么释放数据库的压力呢?换个高级数据库或搞数据库集群?小猿摇了摇头?今晚就要交差了,时间金钱不允许啊!小猿分析了一下,发现大家都向数据库请求静态数据或不常变动数据,比如菜单,历时数据啊等!小猿恍然大悟,从裤兜里掏出了。。。一本(只)redis宝典(U盘)!!
上面的故事是瞎编的,是为了引出redis。redis是啥?请看这
简单解释:redis就是基于内存的数据库。可以理解为类似数据库的中间件!
redis能干嘛? 能干很多事!其中能帮我们存储缓存数据(本章的主题)。特别是在分布式,服务器跟服务器之间实现共享缓存等!!!
springboot整合Redis
- 第一步:下载安装redis(下载地址)
- 第二步:pom.xml引入
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
- 第三步:在application.properties(application.ymx)配置redis
#Redis配置
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.max-wait=-1ms
spring.redis.jedis.pool.min-idle=0
- 第四步:使用redis实现缓存管理和共享(请考虑线程安全性)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
/**
* redis 操作工具类 必须线程安全 synchronized修饰其方法
*/
@Component("redisUtil")
public class RedisUtil {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String, String> redisTemplate;
//以下方法必须线程安全
public synchronized void save(String key,String value){
stringRedisTemplate.opsForValue().set(key,value);
}
public synchronized void del(String key){
stringRedisTemplate.delete(key);
}
public synchronized String get(String key){
return stringRedisTemplate.opsForValue().get(key);
}
}
- 自此小猿就搞定了redis的整合,用redis管理菜单缓存数据,释放了数据库查询压力,系统菜单加载速度明细提高。
就在小猿刚想喝口茶休息一下的时候,手机又响了起来。经理又来电说:“小猿啊,跟你说个事,公司扩招了,要招多百号人,我们这系统能不能支撑的了?而且听说公司还要搞一套手机端的,以我们这个系统为后台支持。。。。哔哩吧啦”。