作者:不染心
时间:2021/8/2

查看数据是从数据库中拿的还是缓存中?

(一)打开debug, 开启缓存

🍃application.yml

# 本项目开启debug日志
logging:
  level:
    com.dyl.shirocsdn: debug

🍃 ShiroConfig.java

// 使用ehcache做本地缓存
customerRealm.setCacheManager(new EhCacheManager());
//开启全局缓存
customerRealm.setCachingEnabled(true);
//开启认证缓存
customerRealm.setAuthenticationCachingEnabled(true);
//开启授权缓存
customerRealm.setAuthorizationCachingEnabled(true);
// 认证name
customerRealm.setAuthenticationCacheName("authenticationCache");
// 授权name
customerRealm.setAuthorizationCacheName("authorizationCache");

(二)测试缓存开启是否有效

💥 开启缓存,运行,并点击登陆按钮两次,查看运行结果:

2021-07-31 10:59:12.932 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName      : ==>  Preparing: select * from user where user_name = ?
2021-07-31 10:59:12.964 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName      : ==> Parameters: usertest(String)
2021-07-31 10:59:12.991 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName      : <==      Total: 1
2021-07-31 10:59:13.041  INFO 15624 --- [nio-8080-exec-1] c.d.s.service.impl.UserServiceImpl       : usertest 认证成功
2021-07-31 10:59:13.043  INFO 15624 --- [nio-8080-exec-1] c.d.s.shiro.realms.CustomerRealm         : ====授权开始===
2021-07-31 10:59:13.043 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName      : ==>  Preparing: select * from user where user_name = ?
2021-07-31 10:59:13.044 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName      : ==> Parameters: usertest(String)
2021-07-31 10:59:13.046 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectUserByName      : <==      Total: 1
2021-07-31 10:59:13.050 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectPermisByRole    : ==>  Preparing: SELECT permission_code FROM `permission` as t1 INNER JOIN role_permission as t2 on t1.permission_id = t2.permission_id INNER JOIN role as t3 on t3.role_id = t2.role_id where role_code = ?;
2021-07-31 10:59:13.050 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectPermisByRole    : ==> Parameters: user(String)
2021-07-31 10:59:13.088 DEBUG 15624 --- [nio-8080-exec-1] c.d.s.m.UserMapper.selectPermisByRole    : <==      Total: 2
2021-07-31 10:59:13.089  INFO 15624 --- [nio-8080-exec-1] c.d.s.shiro.realms.CustomerRealm         : usertest的权限有:[user, user:test]


2021-07-31 10:59:14.610 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName      : ==>  Preparing: select * from user where user_name = ?
2021-07-31 10:59:14.611 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName      : ==> Parameters: usertest(String)
2021-07-31 10:59:14.614 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName      : <==      Total: 1
2021-07-31 10:59:14.615  INFO 15624 --- [nio-8080-exec-3] c.d.s.service.impl.UserServiceImpl       : usertest 认证成功
2021-07-31 10:59:14.615  INFO 15624 --- [nio-8080-exec-3] c.d.s.shiro.realms.CustomerRealm         : ====授权开始===
2021-07-31 10:59:14.616 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName      : ==>  Preparing: select * from user where user_name = ?
2021-07-31 10:59:14.616 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName      : ==> Parameters: usertest(String)
2021-07-31 10:59:14.619 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectUserByName      : <==      Total: 1
2021-07-31 10:59:14.620 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectPermisByRole    : ==>  Preparing: SELECT permission_code FROM `permission` as t1 INNER JOIN role_permission as t2 on t1.permission_id = t2.permission_id INNER JOIN role as t3 on t3.role_id = t2.role_id where role_code = ?;
2021-07-31 10:59:14.620 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectPermisByRole    : ==> Parameters: user(String)
2021-07-31 10:59:14.633 DEBUG 15624 --- [nio-8080-exec-3] c.d.s.m.UserMapper.selectPermisByRole    : <==      Total: 2
2021-07-31 10:59:14.634  INFO 15624 --- [nio-8080-exec-3] c.d.s.shiro.realms.CustomerRealm         : usertest的权限有:[user, user:test]

nio-8080-exec-1是第一次认证授权

nio-8080-exec-3是第二次认证授权

两次都调用了数据库查询语句子,数据都从数据库中获取,其有一定的压力。

💥 ShiroConfig.java不开缓存,将下面代码注释掉

// 使用ehcache做本地缓存
// customerRealm.setCacheManager(new EhCacheManager());
2021-07-31 10:47:37.154 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName      : ==>  Preparing: select * from user where user_name = ?
2021-07-31 10:47:37.186 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName      : ==> Parameters: usertest(String)
2021-07-31 10:47:37.213 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName      : <==      Total: 1
2021-07-31 10:47:37.265  INFO 4072 --- [nio-8080-exec-2] c.d.s.service.impl.UserServiceImpl       : usertest 认证成功
2021-07-31 10:47:37.266  INFO 4072 --- [nio-8080-exec-2] c.d.s.shiro.realms.CustomerRealm         : ====授权开始===
2021-07-31 10:47:37.267 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName      : ==>  Preparing: select * from user where user_name = ?
2021-07-31 10:47:37.267 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName      : ==> Parameters: usertest(String)
2021-07-31 10:47:37.270 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectUserByName      : <==      Total: 1
2021-07-31 10:47:37.273 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectPermisByRole    : ==>  Preparing: SELECT permission_code FROM `permission` as t1 INNER JOIN role_permission as t2 on t1.permission_id = t2.permission_id INNER JOIN role as t3 on t3.role_id = t2.role_id where role_code = ?;
2021-07-31 10:47:37.274 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectPermisByRole    : ==> Parameters: user(String)
2021-07-31 10:47:37.280 DEBUG 4072 --- [nio-8080-exec-2] c.d.s.m.UserMapper.selectPermisByRole    : <==      Total: 2
2021-07-31 10:47:37.281  INFO 4072 --- [nio-8080-exec-2] c.d.s.shiro.realms.CustomerRealm         : usertest的权限有:[user, user:test]

2021-07-31 10:47:38.966  INFO 4072 --- [nio-8080-exec-3] c.d.s.service.impl.UserServiceImpl       : usertest 认证成功

2021-07-31 10:47:40.131  INFO 4072 --- [nio-8080-exec-4] c.d.s.service.impl.UserServiceImpl       : usertest 认证成功

nio-8080-exec-2是第一次认证授权

nio-8080-exec-3是第二次认证

nio-8080-exec-4是第三次认证

可以发现没有从数据库中取数据,直接缓存中有,认证成功


版权声明:本文为qq_38234785原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_38234785/article/details/119318402