shiro使用redis作为缓存

本文探讨了在分布式环境下,如何利用Redis作为Shiro的缓存服务器,以解决用户角色和权限信息的缓存问题。分析了本地缓存和Redis缓存的优缺点,包括分布式下权限同步的需求和网络延迟的影响。并提供了实现AbstractCacheManager的代码示例,以及Redis序列化策略的讨论,包括JDK和JSON序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用场景:Shiro为每个用户的角色和权限信息提供缓存支持,通过Shiro自己定义的CacheManager实现,默认实现有Ehcache和内存(就是一个Map结构),在应用中通常使用redis作为缓存服务器,因此使用redis来作为shiro的缓存。
优缺点:一般来说缓存放在本地,通过本地内存进行缓存速度更快,但是在分布式环境下,修改了用户权限需要进行同步。将缓存和Session放在统一的地方进行管理可以解决,但是网络请求延迟较高,且容易造成瞬间高并发。
代码分析:
  1. 实现AbstractCacheManager:
package com.example.demo.shiro;

import org.apache.shiro.cache.AbstractCacheManager;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.cache.CacheException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @program: demo
 * @description:
 * @author: C_xf
 * @create: 2018-11-25 18:38
 **/
@Component
public class MyCacheManager extends AbstractCacheManager {
    @Autowired
    private MCahce mCahce;
    @Override
    protected Cache createCache(String name) throws CacheException {
        ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值