SpringBoot整合Redis的方法
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容介绍了"SpringBoot整合Redis的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年01月24日SpringBoot整合Redis的方法
本篇内容介绍了"SpringBoot整合Redis的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
架构
方案
使用 redis
集中存储,实现分布式集群共享用户信息,这里我们采用第三方开源插件crazycake
来实现,pom.xml
引入:
org.springframework.boot spring-boot-starter-data-redis org.crazycake shiro-redis 3.2.3
配置 application.properties
:
# Redis# 数据库索引(默认为0)redis.database=0# 服务器地址 变更为自己的redis.host=127.0.0.1# 服务器连接端口redis.port=6379# 服务器连接密码,如果不设置密码注释掉即可# redis.password=# 连接超时时间(毫秒)redis.timeout=30000
本来crazycake
插件已经实现了RedisManager
,但是参数不可配,这里我们需要自己重写一下:
public class RedisManager extends WorkAloneRedisManager implements IRedisManager { private RedisProperties redis; private JedisPool jedisPool; public RedisManager(RedisProperties redis) { this.redis = redis; } private void init() { synchronized(this) { if (this.jedisPool == null) { this.jedisPool = new JedisPool(this.getJedisPoolConfig(), redis.getHost(), redis.getPort(), redis.getTimeout(), redis.getPassword(), redis.getDatabase()); } } } @Override protected Jedis getJedis() { if (this.jedisPool == null) { this.init(); } return this.jedisPool.getResource(); }}
参数配置 RedisProperties
:
@Data@ConfigurationProperties(prefix = "redis")public class RedisProperties { private String host; private int port; private int timeout; private String password; private int database;}
配置 ShiroConfig
:
/** * Shiro权限配置 * 一定要配置 @Configuration 和 @EnableConfigurationProperties 注解 */@Configuration@EnableConfigurationProperties({RedisProperties.class})public class ShiroConfig { private RedisProperties redis; public ShiroConfig(RedisProperties redis) { this.redis = redis; } @Bean public UserRealm userRealm() { return new UserRealm(); } @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean (SecurityManager securityManager) { ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); shiroFilterFactoryBean.setSecurityManager(securityManager); shiroFilterFactoryBean.setLoginUrl("/index.html"); shiroFilterFactoryBean.setUnauthorizedUrl("/403"); // 拦截器 MapfilterChainDefinitionMap = new LinkedHashMap<>(); /** * 静态文件 */ filterChainDefinitionMap.put("/file/**","anon"); /** * 登录注册 */ filterChainDefinitionMap.put("/register.shtml","anon"); filterChainDefinitionMap.put("/login.shtml","anon"); /** * 管理后台 */ filterChainDefinitionMap.put("/sys/**", "roles[admin]"); filterChainDefinitionMap.put("/**", "authc"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilterFactoryBean; } @Bean public SessionsSecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(userRealm()); securityManager.setCacheManager(cacheManager()); securityManager.setSessionManager(sessionManager()); return securityManager; } @Bean public DefaultWebSessionManager sessionManager() { DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); sessionManager.setSessionIdUrlRewritingEnabled(false); sessionManager.setSessionDAO(redisSessionDAO()); return sessionManager; } @Bean public ShiroDialect shiroDialect(){ return new ShiroDialect(); } /** * cacheManager 缓存 redis实现 * @return */ public RedisCacheManager cacheManager() { RedisCacheManager redisCacheManager = new RedisCacheManager(); redisCacheManager.setRedisManager(redisManager()); return redisCacheManager; } /** * 配置shiro redisManager * @return */ public RedisManager redisManager() { RedisManager redisManager = new RedisManager(redis); return redisManager; } /** * RedisSessionDAO shiro sessionDao层的实现 * 原理就是重写 AbstractSessionDAO * 有兴趣的小伙伴自行阅读源码 */ @Bean public RedisSessionDAO redisSessionDAO() { RedisSessionDAO redisSessionDAO = new RedisSessionDAO(); redisSessionDAO.setRedisManager(redisManager()); return redisSessionDAO; }
"SpringBoot整合Redis的方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
配置
服务器
服务
方法
整合
内容
参数
密码
插件
更多
知识
实用
学有所成
接下来
兴趣
分布式
原理
后台
困境
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器清除隐形盔甲架
各大网站数据库有哪些
hadoop 文件服务器
四川java软件开发
关于网络安全的视频演讲
在软件开发岗位上多久能适应
服务器管理口常用地址
奶茶店销售数据库
工企数据库研发投资数据缺失
智能网联汽车网络安全的预防包括
崇明区制造网络技术要多少钱
电信软件平台软件开发
软件开发分为几个级别
电源短路导致服务器不开机
华为v5服务器
深圳爱都网络技术
三门峡网络安全展馆
天谕同一服务器怎么换号
客户端怎么显示数据库的数据
怀旧服部落服务器有哪些
SQL数据库创建连接服务器
数据库怎么查看分给用户的权限
上海工业大型服务器厂家
安全日志审计服务器报价
中文词典数据库
java网络安全知乎
乡镇成立网络安全领导小组
河北开源软件开发报价
halo连外部数据库
国企软件开发能不能学到技术