前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx + Shiro + Redis 实现负载均衡集群(成绩报告查询系统升级篇)

Nginx + Shiro + Redis 实现负载均衡集群(成绩报告查询系统升级篇)

作者头像
小柒2012
发布2018-04-13 14:33:46
1K0
发布2018-04-13 14:33:46
举报
文章被收录于专栏:IT笔记IT笔记

写在开始

上一篇讲到使用Ehcache实现分布式缓存,尽管其直接操作JVM内存,速度快,效率高,但是缓存同步麻烦,分布式集群配置不方便,如果应用服务器重启会丢失缓存数据。

下面来分析一下Redis做系统session缓存实现。

Redis介绍

Redis是一个key-value存储系统。和Memcached类似, 它的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

Redis还支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以关联其他从服务器的主服务器。

Redis是通过socket访问到缓存服务,效率比ecache低,但比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。

Redis安装

https://cloud.tencent.com/developer/article/1095663

项目架构

Spring MVC4 + Shiro-1.3.2 + Redis3.2.8

运行环境

Nginx + Tomcat7(3台) + JDK1.7

项目架构图

项目实现

Redis类库 jedis-2.9.0依赖commons-pool2-2.4.1

redis.properties配置:

代码语言:javascript
复制
#============================#
#===== redis sttings     ====#
#============================#
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
#单位秒
redis.expire=1800
redis.timeout=2000
redis.usepool=true
redis.database=1

重写 AbstractSessionDAO 和 CacheManager

applicationContext-redis.xml配置:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <description>Shiro redisManager(集群环境下使用此配置,单点也可以使用)</description>
    <!-- shiro redisManager -->
    <bean id="redisManager" class="com.itstyle.web.common.redis.RedisManager">
        <property name="host" value="${redis.host}" />
        <property name="password" value="${redis.password}"/>
        <property name="port" value="${redis.port}" />
        <property name="expire" value="${redis.expire}" />
        <property name="timeout" value="${redis.timeout}"/>
    </bean> 

    <!-- redisSessionDAO -->
    <bean id="sessionDAO" class="com.itstyle.web.common.redis.RedisSessionDAO">
        <property name="redisManager" ref="redisManager" />
    </bean>
    <!-- cacheManager -->
    <bean id="shiroCacheManager" class="com.itstyle.web.common.redis.RedisCacheManager">
        <property name="redisManager" ref="redisManager" />
    </bean>

</beans>

**

声明:本文内容大体流程仅供参考,有些并未涉及到具体代码实现。**

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在开始
  • Redis介绍
  • Redis安装
  • 项目架构
  • 运行环境
  • 项目架构图
  • 项目实现
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档