spring mybatis 结合redis 缓存[演示]
- 效果
1,1000篇文章,
2,5000个评论
3,评论列表,多次刷新,不会发送新的sql,时间比较
4,增加评论,如果不修改redis中的相应的评论无效,则同样不会发送新的sql
5,删除评论,修改redis中的相应的评论无线,再次查询,则会发送sql
- 视频
https://github.com/lakeoffaith/blog/blob/master/%E7%90%86%E6%80%A7/redis/redis.mp4 - 任务分解
- sql文件
DROP TABLE IF EXISTS article;
CREATE TABLE article(
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
content varchar(255) DEFAULT NULL,
PRIMARY KEY(id)
)ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
- sql评论
articleId int(11) NOT NULL,
PRIMARY KEY (id),
KEY f_comment_article (articleId),
CONSTRAINT f_comment_article FOREIGN KEY (articleId) REFRENCES article (id) ON DELETE CASCADE
- eclipse 和 tomcat 发布
eclipse 新建动态项目,生产web.xml;右键项目发布到服务中,进入新建server项目,在server窗口中点击启动,发布项目成功。
javascript:void(0)
- springmvc
对页面进行链接进行跳转获取数据,生产页面。
1:在web.xml中配置servlet,加载进入springmvc.xml
2:springmvc.xml 开启注解扫描,@Controller,@RequestMapper,@ResponseBody
3:视图解析器,找到所需要的jsp模板。
- spring
提供事务管理 : 业务逻辑完整性,数据库数据统一,要么数据插入全部正确,要么直接报错,数据全部不插入。
提供切面 aop:用于权限控制,访问某个方法的日子记录,执行时间长度计算
提供ioc容器: 通过注解来创建bean, 管理对象周期,依赖注入。
配置文件:1:注解扫描,2:sqlsessionfactory bean,3:事务bean,4:mybatis mapper bean, 4:aop:aspectj-autoproxy/
包:1:spring 需要的包 aop: aspectjweaver,aopalliance.jar
- mybatis
mybatis-config.xml:配置全局别名加载mapper.xml,启用关联延迟加载,二级缓存,连接池等
mapper.xml :resultmapper ,启用延迟加载,sql
包:1 sql打印 log4j,log4j-api,log4j-core,slf4j-api,slf4j-log4j12 ;2 mybatis ,mybatis-spring
- 查询
- 增删改查
- 查询评论
- 插入 1000 篇文章 和 5000 评论
BEGIN
DECLARE b int DEFAULT 0;
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
START TRANSACTION;
while b<5000 DO
INSERT INTO comment (content,articleId) VALUES(CONCAT('评论的内容',b),FLOOR(6872+RAND()*1000));
set b=b+1;
end WHILE;
if t_error=1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
SELECT t_error;
END
- 根据文章的id来查询 所有的评论
- 查看到发送的sql
- mybatis的延时加载功能
- mybatis的二级缓存
mybatis的二级缓存javascript:void(0)
- redis
服务器安装 javascript:void(0)
客户端使用 如 flushall
包:jedis 和spring-data-redis
配置:1:redis.properties 2:spring中maxTotal和maxWaitMillis ,redisTemplate的bean
- redis中存放list
- 页面按钮调用原生ajax请求
- 删除评论,redis中清除缓存
- 更改
1:list中每条数据以单独的key存放,数据的增删改都只针对redis中的数据,每隔一段时间就需要同步数据库和redis,怎么去同步?