当前位置: 首页 > 工具软件 > shiro-redis > 使用案例 >

windows安装redis&springboot集成shiro-redis--记录

淳于飞文
2023-12-01

官方下载地址:https://redis.io/download

国内下载地址:http://www.redis.cn/download.html

一、安装过程
1.首先把下载的压缩包解压到一个文件夹中
2.打开cmd指令窗口
3.cd到刚才解压的文件路径
4.然后输入redis-server redis.windows.conf 命令
5.接下来部署redis在windows下的服务,关掉上一个窗口再打开一个新的cmd命令窗口
然后输入指令redis-server --service-install redis.windows.conf
随后,进入右击此电脑–管理–服务和应用程序–服务,启动服务

二、Redis常用的指令
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop
测试redis,通过cd到我们解压的目录,输入指令redis-cli,通过set a 123|get a指令查看是否成功

查询所有key:keys *
匹配查询key:kyes [key]*
查询key的剩余有效时间:ttl [key]
设置key的到期时间:EXPIRE [key]

三、调优
查看当前的redis连接数
info clients

查询redis允许的最大连接数
config get maxclients

设置redis允许的最大连接数
config set maxclients 100000

四、springboot集成shiro-redis

1.pom.xml 引入jar包

        <!-- shiro+redis缓存插件 -->
		<dependency>
			<groupId>org.crazycake</groupId>
			<artifactId>shiro-redis</artifactId>
			<version>2.4.2.1-RELEASE</version>
		</dependency>

2.application.properties 配置

#redis
redis.host=localhost
redis.port=6379

3.ShiroConfig.java 加入如下四个方法,并修改 WebSecurityManager 方法

    // cacheManager 缓存 redis实现 使用的是shiro-redis开源插件
	public RedisCacheManager cacheManager() {
		RedisCacheManager redisCacheManager = new RedisCacheManager();
		redisCacheManager.setRedisManager(redisManager());
		return redisCacheManager;
	}

	// 配置shiro redisManager 使用的是shiro-redis开源插件
	public RedisManager redisManager() {
		RedisManager redisManager = new RedisManager();
		redisManager.setHost(redis_host);
		redisManager.setPort(redis_port);
		redisManager.setExpire(1800);// 配置缓存过期时间 30分钟
		redisManager.setTimeout(0);
		// redisManager.setPassword(password);
		return redisManager;
	}

	// SessionManager 使用的是shiro-redis开源插件
	@Bean
	public DefaultWebSessionManager sessionManager() {
		DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
		// 重定向url去除jssessionid
		sessionManager.setSessionIdUrlRewritingEnabled(false);
		sessionManager.setSessionDAO(redisSessionDAO());
		return sessionManager;
	}

	// RedisSessionDAO shiro sessionDao层的实现 通过redis 使用的是shiro-redis开源插件
	@Bean
	public RedisSessionDAO redisSessionDAO() {
		RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
		redisSessionDAO.setRedisManager(redisManager());
		return redisSessionDAO;
	}
    // 权限管理配置
	@Bean
	public WebSecurityManager securityManager() {
		DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
		// 设置realm
		securityManager.setRealm(myShiroRealm());
		// 设置普通缓存
		// securityManager.setCacheManager(getCache());

		// 自定义缓存实现 使用redis
		securityManager.setCacheManager(cacheManager());
		// 自定义session管理 使用redis

		securityManager.setSessionManager(sessionManager());
		return securityManager;
	}

4、全局异常捕捉

@ControllerAdvice
public class ExceptionFilter {
	@ExceptionHandler
	@ResponseBody
	public String ErrorHandler(Exception e) {
		return "未知异常!原因是" + e;
	}

	@ExceptionHandler
	@ResponseBody
	public String ErrorHandler(JedisConnectionException e) {
		return "redis连接失败!";
	}
}

 

 

 

 

 类似资料: