windows下Springboot部署redis
一、在windows下安装redis
在windows下安装其实并不是安装,下载下来直接解压,下面给出一个百度云下载链接。。
链接:https://pan.baidu.com/s/1Vsha5GkBCa5rHvlFy5h3wg 密码:4j8v 亲自测试,还不错
1,下载下来,解压后图片
2,修改redis.windows.conf文件,设置maxmemory 大小 为1024000000
3,设置redis密码 requirepass
4,设置完成后保存文件,启动redis
redis-server.exe redis.windows.conf
5,启动成功,打开任务管理器
正常情况应该是正在运行,如果没有启动,你就自己右键运行一下吧。。。尴尬
6,将将redis加入到windows的服务中
redis-server –service-install redis.windows.conf –loglevel verbose
进行到这里也算是完成了第一步
二、在Springboot项目中部署redis
pom文件中引入Springboot结合redis相关的依赖
<properties>
<spring-boot-starter-redis-version>1.3.2.RELEASE</spring-boot-starter-redis-version>
</properties>
<!-- Spring Boot Reids 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>${spring-boot-starter-redis-version}</version>
</dependency>
在 application.properties增加redis配置
#redis Config
spring.redis.database=0 #数据库索引,默认为0
spring.redis.host=127.0.0.1 #服务器地址
spring.redis.port=6379 #服务器连接端口号
spring.redis.password=123456 #服务器连接密码
spring.redis.pool.max-active=8#连接池最大连接数
spring.redis.pool.max-wait=-1 #连接池最大阻塞等待时间(负值表示没有限制)
spring.redis.pool.max-idle=8 #连接池最大空闲时间
spring.redis.pool.min-idle=0 #连接池最小连接时间
spring.redis.timeout=0 #连接超时时间
在接口实现类中添加以下代码,也是缓存实现代码
@SuppressWarnings("unchecked")
@Override
public List<SigninDO> listAllSigninDOByWorkId(String workId) {
// TODO 自动生成的方法存根
String key=workId;
ValueOperations<String,List<SigninDO>> operations = redisTemplate.opsForValue();
boolean haskey=redisTemplate.hasKey(key);
List <SigninDO>list=new ArrayList<SigninDO>();
System.out.println(haskey);
if(haskey){
List<SigninDO> listCache=operations.get(key);
System.out.println("==========从缓存中获得数据=========");
for (SigninDO signinDO : listCache) {
System.out.println(signinDO.getId());
System.out.println(signinDO.getWorkId());
System.out.println(signinDO.getStartTime());
System.out.println(signinDO.getEndTime());
System.out.println(signinDO.getEnjoin());
}
System.out.println("==============================");
return listCache;
}else{
List<SigninDO> listNoCache=signinDAO.listAllSigninDOByWorkId(workId);
System.out.println("==========从数据表中获得数据=========");
operations.set(key, listNoCache);
System.out.println("==============================");
return listNoCache;
}
}
}
简单描述一下原理就是,第一次查询数据库,顺便就把数据放在了redis缓存中,以(key,value)的形式存放。在这里面key值是存储ID值,value值是存放的对象,当下一次查询的时候,redis数据库中已经有这一条数据,当有相同的key值进来访问的时候,可以直接从redis数据库中直接查询到相应的对象数据(在这里是List集合)。
第一次请求
第二次请求:
更新数据库时候更新缓存(即删除缓存,重新读取)
@SuppressWarnings("unchecked")
@Override
public int updateCache(SigninDO signin){
int result = signinDAO.updateById(signin);
if(result>0){
String key=signin.getWorkId();
if(redisTemplate.hasKey(key)){
redisTemplate.delete(key);
return 0;
}
}
return 1;
}
本文章能够做出来也是参考了一位博主的文章
https://blog.youkuaiyun.com/u012343297/article/details/78840862 感谢。。
不懂在下面留言即可
欢迎订阅关注公众号(JAVA和人工智能)
获取更多免费书籍、资源、视频资料