赞
踩
认知redis
为什么要用缓存?
随着用户访问越来越多,数去数据库的并打越来越大。
数据库的瓶颈在哪里?
减少读写磁盘,使用内存数据库(redis)来进行提升性能
在什么地方使用缓存呢?
分布式的系统有很多子系统,比如说: 前台系统、后台系统、用户系统
后台使用缓存: 可以减少连接数据库,提高后台的性能
前提使用缓存: 可以接口的访问并发调用,减少接口调用次数,来提高性能
……
所以说,在所有的系统中使用缓存都可以提高性能
添加缓存的原则:
不能影响原来的业务
添加缓存的步骤:
a) 先从缓存中取出数据
b) 判断数据是否能获取,如果获取到,则返回缓存中得数据
c) 否则,从数据库中获取,返回内容
Redis缓存是一种根据根据key-map方式生成的缓存形式,一般数据会缓存到内存中,如果数据量比较大,可能需要进行相关设置,首先我们先尽心SSM框架集成Redis的一些配置。
redis导包
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.6.RELEASE</version> </dependency> <!-- redis客户端jar --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.0</version> </dependency>
书写redis.properties配置文件
# 服务器地址 redis.host=192.168.1.103 # 密码 redis.pass= # 本机地址 redis.hostName=127.0.0.1 # 端口号 redis.port=6379 # 闲置时间 redis.timeout=15000 redis.usePool=true # 最大等待连接中的数量 redis.maxIdle=6 # 最大连接数据库连接数 redis.maxActive=100 # 连接超时的时间 redis.maxWait=3000 redis.minEvictableIdleTimeMillis=300000 redis.numTestsPerEvictionRun=3 redis.timeBetweenEvictionRunsMillis=60000 redis.testOnBorrow=true
在mybatis-config.xml中添加配置
<settings>
<!-- 全局映射器启用缓存 *主要将此属性设置完成即可 -->
<setting name="cacheEnabled" value="true" />
<!-- 查询时,关闭关联对象即时加载以提高性能 -->
<setting name="lazyLoadingEnabled" value="false" />
<!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
<setting name="aggressiveLazyLoading" value="true" />
</settings>
在applicationcontext.xml添加配置
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <property name="ignoreResourceNotFound" value="true" /> <property name="locations"> <list> <value>classpath*:redis.properties</value> </list> </property> </bean> <!-- redis数据源 --> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="300" /> <property name="maxTotal" value="100" /> <property name="maxWaitMillis" value="10000" /> <property name="testOnBorrow" value="true" /> </bean> <!-- Spring-redis连接池管理工厂 --> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="localhost" p:port="6379" p:password="" p:pool-config-ref="poolConfig"/> <!-- 使用中间类解决RedisCache.jedisConnectionFactory的静态注入,从而使MyBatis实现第三方缓存 --> <bean id="redisCacheTransfer" class="com.wuwei.console.config.RedisCacheTransfer"> <property name="jedisConnectionFactory" ref="jedisConnectionFactory"/> </bean>
另外,在实体类中,需要对实体类进行继承序列化类
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。