您的位置:首页 > 数据库 > Redis

redis集群之哨兵模式高可用整合spring的配置使用及spring缓存机制和redis的结合

2018-06-06 22:04 1166 查看
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:cache="http://www.springframework.org/schema/cache"
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.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- spring缓存机制和redis的结合 -->
<!-- 缓存注解驱动 -->
<cache:annotation-driven/>

<!-- 缓存管理器memocache ehcache redis -->
<bean id="redisCacheManger"  class="org.springframework.data.redis.cache.RedisCacheManager">
<!-- 注入redis模板 -->
<constructor-arg name="redisOperations" ref="template"></constructor-arg>
<!-- 设置缓存名称 -->
<constructor-arg name="cacheNames">
<list>
<value>cachename</value>
</list>
</constructor-arg>
<!-- 默认的超时时间 默认10分钟 -->
<property name="defaultExpiration" value="600"></property>
</bean>

<!-- spring缓存机制和redis的结合使用 在serviceImpl处的注解使用说明
@Cacheable(value="cachename" ,key="students")
当调用该方法时,首先根据key去缓存服务器查找数据,如果找到了数据,则直接返回,
不会调用注解的方法,如果没有找到,则正常调用目标方法,并且将方法的返回值进行缓存
该注解通常用于数据查找,必须注解有返回值的方法

@CachePut(value="cachename",key="'student_'+#result.id")
@CachePut(value="cachename",key="'student_'+#stu.id")
该注解基本和Cacheable类似,唯一的不同在于,CachePut注解的方法一定会被执行,通常用于增加、更新数据

@CacheEvict(value="cachename",key="'student_'+#id")
该注解通常用于删除

注解里还有两个不常用的参数condition、unless
-->
</beans>
<?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:p="http://www.springframework.org/schema/p"
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.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

<!-- 配置redis连接池对象 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大空闲数 -->
<property name="maxIdle" value="50"></property>
<!-- 最大连接数 -->
<property name="maxTotal" value="100"></property>
<!-- 最大等待时间 -->
<property name="maxWaitMillis" value="20000"></property>
</bean>

<!-- 哨兵配置项 -->
<bean id="sentinelConfig"  class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
<!-- 配置master主服务器的名称 -->
<property name="master">
<bean class="org.springframework.data.redis.connection.RedisNode">
<property name="name" value="mymaster"></property>
</bean>
</property>
<!-- 配置哨兵服务 -->
<property name="sentinels">
<set>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="192.168.101.153"></constructor-arg>
<constructor-arg name="port" value="26379"></constructor-arg>
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="192.168.101.153"></constructor-arg>
<constructor-arg name="port" value="26380"></constructor-arg>
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="192.168.101.153"></constructor-arg>
<constructor-arg name="port" value="26381"></constructor-arg>
</bean>
</set>
</property>
</bean>

<!-- 配置redis连接工厂 -->
<bean id="connectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!-- 连接池配置 -->
<property name="poolConfig" ref="poolConfig"></property>
<!-- 配置哨兵 -->
<constructor-arg name="sentinelConfig" ref="sentinelConfig"/>
<!-- 连接主机 -->
<property name="hostName" ref="192.168.101.128"></property>
<!-- 端口 -->
<property name="port" ref="6379"></property>
<!-- 密码 -->
<property name="password" ref="root"></property>
</bean>

<!--
配置序列化的方式   搜索*RedisSerializer  有很多种序列化的方式
-->
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>

<!-- 配置redis模板对象
模板的使用
Student的实体类要事项接口 Serializable
Student stu = new Student(10,"小红",19,new Date());
template.opsForValue().set("student",stu);
-->
<bean id="template" class="org.springframework.data.redis.core.RedisTemplate">
<!-- 配置连接工厂 -->
<property name="connectionFactory" ref="connectionFactory"></property>
<!-- 修改键的序列化器 -->
<property name="keySerializer" ref="stringRedisSerializer"></property>
<!--  修改值的序列化器  -->
<property name="valueSerializer" ref="stringRedisSerializer"></property>
</bean>
</beans>

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: