6.2、redis集群和单片机spring
2017-12-06 15:39
127 查看
1、单片机 JedisPool Jedis
1、我没有用maven项目,所以引入了jar包
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.2.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.3</version> </dependency> |
2、spring 配置文件,添加JedisPool
<?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:mvc="http://www.springframework.org/schema/mvc" 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-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <property name="maxTotal" value="30" /> <!-- 最大空闲连接数 --> <property name="maxIdle" value="10" /> <!-- 每次释放连接的最大数目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 释放连接的扫描间隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 连接最小空闲时间 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在获取连接的时候检查有效性, 默认false --> <property name="testOnBorrow" value="true" /> <!-- 在空闲时检查有效性, 默认false --> <property name="testWhileIdle" value="true" /> <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true --> <property name="blockWhenExhausted" value="false" /> </bean> <!-- redis单机 通过连接池 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="close"> <constructor-arg name="poolConfig" ref="jedisPoolConfig"/> <constructor-arg name="host" value="127.0.0.1"/> <constructor-arg name="port" value="6379"/> </bean> </beans> |
3、测试JedisPool
public class JedisPoolMain { static Jedis jedis = null; public static void main(String[] args) { ApplicationContext context 1b1d7 = new ClassPathXmlApplicationContext("applicationContext-redis.xml"); JedisPool pool = (JedisPool) context.getBean("jedisPool"); try { jedis = pool.getResource(); jedis.set("name", "spring jedis pool"); String name = jedis.get("name"); System.out.println(name); }catch(Exception ex){ ex.printStackTrace(); }finally{ if(jedis != null){ //关闭连接 jedis.close(); } } } } |
2、集群准备:
1、首先,要明确一个非常重要的一点
1、搭建集群命令,不使用127.0.0.1,因为我使用了127.0.0.1,但是这里不想动干戈,所以在虚拟机nat下进行了端口的映射。(正常情况下下面的代码中连接redis的ip应该为 192.168.189.130)
redis-trib.rb create --replicas 1 192.168.189.130:7000 192.168.189.130:7001 192.168.189.130:7002 192.168.189.130:7003 192.168.189.130:7004 192.168.189.130:7005
2、JedisCluster java
public class JedisClusterJavaMain { public static void main(String[] args) { JedisPoolConfig config = new JedisPoolConfig(); // 最大连接数 config.setMaxTotal(30); // 最大连接空闲数 config.setMaxIdle(2); //集群结点 Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>(); jedisClusterNode.add(new HostAndPort("127.0.0.1", 7000)); jedisClusterNode.add(new HostAndPort("127.0.0.1", 7001)); jedisClusterNode.add(new HostAndPort("127.0.0.1", 7002)); jedisClusterNode.add(new HostAndPort("127.0.0.1", 7003)); jedisClusterNode.add(new HostAndPort("127.0.0.1", 7004)); jedisClusterNode.add(new HostAndPort("127.0.0.1", 7005)); JedisCluster jc = new JedisCluster(jedisClusterNode, config); JedisCluster jcd = new JedisCluster(jedisClusterNode); jcd.set("name", "zhangsan"); String value = jcd.get("name"); System.out.println(value); } } |
2、测试成功
3、spring搭建集群连接
1、spring配置文件
<?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:mvc="http://www.springframework.org/schema/mvc" 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-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <property name="maxTotal" value="30" /> <!-- 最大空闲连接数 --> <property name="maxIdle" value="10" /> <!-- 每次释放连接的最大数目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 释放连接的扫描间隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 连接最小空闲时间 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在获取连接的时候检查有效性, 默认false --> <property name="testOnBorrow" value="true" /> <!-- 在空闲时检查有效性, 默认false --> <property name="testWhileIdle" value="true" /> <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true --> <property name="blockWhenExhausted" value="false" /> </bean> <!-- redis集群 --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg index="0"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="127.0.0.1"></constructor-arg> <constructor-arg index="1" value="7000"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="127.0.0.1"></constructor-arg> <constructor-arg index="1" value="7001"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="127.0.0.1"></constructor-arg> <constructor-arg index="1" value="7002"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="127.0.0.1"></constructor-arg> <constructor-arg index="1" value="7003"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="127.0.0.1"></constructor-arg> <constructor-arg index="1" value="7004"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="127.0.0.1"></constructor-arg> <constructor-arg index="1" value="7005"></constructor-arg> </bean> </set> </constructor-arg> <constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg> </bean> </beans> |
2、JedisCluster
public class JedisClusterSpringMain { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-jedisCluster.xml"); JedisCluster jedisCluster = (JedisCluster) context.getBean("jedisCluster"); jedisCluster.set("name", "HealerJean"); String value = jedisCluster.get("name"); System.out.println(value); jedisCluster.del("name"); String delvalue = jedisCluster.get("name"); System.out.println(delvalue); } } |
3、测试成功
3、淘淘商城缓存 (记得将对象变成json放进去)
@Override public TaotaoResult getContentList(long cid) throws Exception{ //缓存逻辑,先判断缓存中是否有内容 try { String contentStr = cluster.hget(TB_CONTENT_KEY, cid + ""); if (!StringUtils.isBlank(contentStr)) { //把json字符串转换成对象列表 List<TbContent> list = JsonUtils.jsonToList(contentStr, TbContent.class); //返回结果 return TaotaoResult.ok(list); } } catch (Exception e) { e.printStackTrace(); //缓存不能影响正常逻辑 } //从数据库中加载数据 TbContentExample example = new TbContentExample(); //添加条件 Criteria criteria = example.createCriteria(); criteria.andCategoryIdEqualTo(cid); List<TbContent> list = contentMapper.selectByExample(example); //把结果添加到redis数据库中 try { cluster.hset(TB_CONTENT_KEY, cid + "", JsonUtils.objectToJson(list)); } catch (Exception e) { e.printStackTrace(); //缓存不能影响正常逻辑 } //返回结果 return TaotaoResult.ok(list); } |
相关文章推荐
- spring整合redis集群遇到的问题及MyEclipse下Maven的安装配置
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- Redis 一二事 - 在spring中使用jedis 连接调试单机redis以及集群redis
- spring session redis 实现集群session共享,SessionListener监听生效
- spring boot下JedisCluster方式连接Redis集群的配置
- redis集群搭建以及和spring整合
- java架构师、集群、高可扩展、高性能、高并发、性能优化、Spring boot、Dubbo、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师之路
- spring-session + redis 实现集群 session 共享
- jedis(redis)整合spring,包括jedis客户端单机版,jedis集群版配置 ,连接池配置
- 不同版本的Spring与Redis集群配置
- Redis3.2.5 集群搭建以及Spring-boot测试
- * Redis(四):Spring + JedisCluster操作Redis(集群)
- (十九)SpringBoot之使用Spring Session集群-redis
- Springmvc+redis jedis.jar redis集群连接方式,JedisSentinelPool哨兵连接池
- Spring集成Redis集群(含spring集成redis代码)
- Spring Data Redis 操作 redis 集群 --client
- Spring Boot + Redis 实现Shiro集群
- spring data redis 操作redis 单机版和集群
- spring集成 JedisCluster 联接 redis3.0 集群
- Redis的集群搭建与Redis与spring整合