zoukankan      html  css  js  c++  java
  • shiro缓存Ehcache

    缓存

    什么是缓存

    服务器中内存中开启的一部分空间

    作用

    用于存储经常被使用且不常改变的数据

    为什么要使用缓存

    • 相对于读取磁盘的读取速度快
    • 访问量大的情况下减少服务器读取磁盘压力

    shiro缓存Ehcache

    shiro用于认证和授权,每次访问都会读取数据库中的数据,这样就会增加数据库压力

    为了减轻数据库压力可以将认证和授权的数据存储在缓存中

    工作流程

    整合EhCache

    添加依赖

            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-ehcache</artifactId>
                <version>1.7.1</version>
            </dependency>

    开启缓存配置

    认证和授权操作都是在Realm中完成的,缓存的配置应该在Realm对象上做配置

    ShiroConfig的配置类中完成

    //Realm 需要自定义
        @Bean
        public ShiroRealm shiroRealm() {
            // 配置 Realm
            ShiroRealm shiroRealm = new ShiroRealm();
    
            //修改密码匹配器
            HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
            hashedCredentialsMatcher.setHashAlgorithmName("MD5");
            shiroRealm.setCredentialsMatcher(hashedCredentialsMatcher);
    
            //配置缓存 
            //设置缓存管理器
            shiroRealm.setCacheManager(new EhCacheManager());
            //开启缓存
            shiroRealm.setCachingEnabled(true);
            //开启认证缓存
            shiroRealm.setAuthenticationCachingEnabled(true);
            //设置认证缓存名
            shiroRealm.setAuthenticationCacheName("authenticationCache");
            //开启授权缓存
            shiroRealm.setAuthorizationCachingEnabled(true);
            //设置授权缓存名
            shiroRealm.setAuthorizationCacheName("authorizationCache");
            return shiroRealm;
        }

    测试

    为什么只有认证的缓存被创建?授权的缓存呢???

    通过debug发现,在服务器启动时授权的缓存就会被创建

    这样的话,服务器重启的话,EhCache缓存中的数据就会没了,想让缓存中的数据不会因为服务器的重启而丢失,可以使用Redis来实现。

  • 相关阅读:
    编程能力与编程年龄
    编程能力与编程年龄
    通俗易懂,一篇文章告诉你编程语言是个啥?
    通俗易懂,一篇文章告诉你编程语言是个啥?
    进程与线程的区别:最浅显易懂的解释
    进程与线程的区别:最浅显易懂的解释
    为什么超 80% 的开源开发者苦苦挣扎在贫困线?
    java之异常处理
    33_java之类加载器和反射
    32_java之TCP和UDP
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15185785.html
Copyright © 2011-2022 走看看