如何在springboot项目中添加redis 缓存?

Redis简介
Redis(Remote Dictionary Server )远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可持久化的日志型、Key-Value数据库。

Redis的特点

- 性能极高,基于内存,读的速度是110000次/s,写的速度是81000次/s
- 丰富的数据类型,支持string、hash、list、set及zset多种数据类型
- 原子性,所有操作都是原子性的,支持事务
- 丰富的特性,支持发布订阅、通知、过期策略等
- 支持持久化,可以将内存中的数据保存在磁盘中,重启后再次加载
- 支持分布式,理论上可以无限扩展
- 单线程,没有线程并发问题

主要应用场景:

1. 作为缓存,提升查询性能
2. 做分布式锁

安装Redis

linux安装

安装c编译器

yum -y install gcc

下载redis

cd /usr/local
wget http://download.redis.io/releases/redis-3.2.5.tar.gz

解压redis

tar -xvf redis-3.2.5.tar.gz
mv redis-3.2.5 redis 

编译redis

cd redis 
make

配置redis

修改redis.conf

# bind 127.0.0.1  去掉绑定本机IP,让其它机器访问
protected mode no 关闭保护模式

启动redis服务器

切换到src中

./redis-server ../redis.conf

启动redis客户端

./reds-cli

从官网下载redis的windows版本
https://github.com/tporadowski/redis/releases
解压后,双击redis-server.exe,就完成了Redis启动

 安装好后启动redis 可视化工具 Redis Desktop Manager 这个可视化工具可以直接搜索下载。

 输入后点击左下角的测试连接,接着会显示连接成功。

然后导入依赖

org.springframework.bootspring-boot-starter-data-redis
   com.alibabafastjson2.0.6compile

在配置文件中配置

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0
spring.redis.jedis.pool.max-active=100
spring.redis.jedis.pool.max-wait=100ms
spring.redis.jedis.pool.max-idle=100
spring.redis.jedis.pool.min-idle=10

相关注解

//启动缓存
@EnableCaching

配置类

@Configuration
public class RedisConfig {@Beanpublic RedisCacheConfiguration provideRedisCacheConfiguration(){//加载默认配置RedisCacheConfiguration conf = RedisCacheConfiguration.defaultCacheConfig();//返回Jackson序列化器return conf.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJacksonJsonRedisSerializer()));}
}

添加完配置类后报错的话记得导包。

@CacheConfig 使用在Service类上,可以配置缓存名称,如:
@CacheConfig(cacheNames = “books”)
@Cacheable 使用在查询方法上,让方法优先查询缓存
@CachePut 使用在更新和添加方法上,数据库更新和插入数据后同时保存到缓存里
@CacheEvict 使用在删除方法上,数据库删除后同时删除缓存
 

 这是在serviceImpl层添加

//按分类查询广告时进行缓存,缓存名称是promotionAd-category,键是分类id

caheName后面的名字自己取,下面的caheable一样,后面时string类型的id属性

其它的crud操作类似,只需要改注解即可。

缓存添加完成后启动项目,执行CRUD后,相应的数据会在redis缓存中出现。

如果对你有帮助的话,还希望能够点个赞,谢谢。 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部