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.csdn.net/u012343297/article/details/78840862 感谢。。