Jedis分布式+序列化
来源:互联网 发布:phpstudy如何配置域名 编辑:程序博客网 时间:2024/06/05 16:55
由于代码中用不到jedis了,做个记录,万一以后还用的着呢,对吧
由于我是要用到双机热备,所以用到了主从redis ,服务器中的配置详见上一篇文章,这里是springboot中的使用和配置
首先是在application.properties文件中配置redis
spring.redis.host=10.5.133.213spring.redis.port=6379spring.redis.pool.max-idle=8spring.redis.pool.min-idle=0spring.redis.pool.max-active=8spring.redis.pool.max-wait=-1spring.redis.sentinel.master=mymasterspring.redis.sentinel.nodes=10.5.133.219:26380spring.redis.timeout=0
spring.redis.sentinel.master=mymaster是主redis的名字,spring.redis.sentinel.nodes=10.5.133.219:26380是sentinel的ip和端口,这里可以配置多个,但是我只用到一个,所以就配置了一个
spring.reids.timout 这个我一开始是放到前面的,可以代码运行不起来,报错,最后放到了最后一行,就可以了,没有详细研究这个是为什么
用jedis,还要配置他的连接池,这个是在代码中配置的
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.JedisShardInfo;import redis.clients.jedis.ShardedJedis;import redis.clients.jedis.ShardedJedisPool;import java.util.ArrayList;import java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;@Configuration@EnableCachingpublic class RedisCacheConfiguration extends CachingConfigurerSupport { Logger logger = LoggerFactory.getLogger(RedisCacheConfiguration.class); @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeout}") private int timeout; @Value("${spring.redis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.pool.max-wait}") private long maxWaitMillis; @Value("${spring.redis.sentinel.nodes}") private String sentinelMaster; /* @Value("${spring.redis.password}") private String password;*/ @Bean public ShardedJedisPool redisPoolFactory() { // 生成多机连接信息列表 int m=sentinelMaster.toString().indexOf(":"); List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(); shards.add( new JedisShardInfo("10.5.133.213", 6379) ); shards.add( new JedisShardInfo(sentinelMaster.toString().substring(0, m),Integer.parseInt(sentinelMaster.toString().substring(m+2))) ); // 生成连接池配置信息 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(10); config.setMaxTotal(30); config.setMaxWaitMillis(3*1000); // 在应用初始化的时候生成连接池 ShardedJedisPool pool = new ShardedJedisPool(config, shards); return pool; }}
这里是分布式的连接池,两个,一个主一个从,当从主切换到从的时候,一开始出现了一个错误,因为从是只读,所以不能写入,然后将主从的redis.conf中的
slave-read-only yes 改为no
这样就可以写入了。
然后使用jedis连接池
@Autowired ShardedJedisPool jedisPool;public void moveAllMap(){ ShardedJedis jedis = jedisPool.getResource(); TrainTraceData trainTraceData=new TrainTraceData(); trainTraceData.setServTag(servTag); byte[] ll = SerializeUtil. serialize(trainTraceData); jedis.set( "good".getBytes(),ll); byte[] value = jedis.get( "good".getBytes()); Object object = SerializeUtil. unserialize(value); if(object!= null){ TrainTraceData goods=(TrainTraceData) object; System. out.println(goods.getServTag()); } System. out.println(jedis.del( "good".getBytes()));}import java.io.ObjectOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;public class SerializeUtil { public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; try { // 序列化 baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); byte[] bytes = baos.toByteArray(); return bytes; } catch (Exception e) { System.out.println("====错误===="+e); } return null; } public static Object unserialize( byte[] bytes) { ByteArrayInputStream bais = null; try { // 反序列化 bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); return ois.readObject(); } catch (Exception e) { } return null; }}
阅读全文
0 0
- Jedis分布式+序列化
- Jedis Client的使用以及序列化
- jedis存储对象(序列化)开发
- jedis分布式锁
- 分布式通讯-序列化
- Jedis、JedisPool、Jedis分布式实例介绍
- Jedis、JedisPool、Jedis分布式实例介绍
- Java Redis Jedis--学习笔记代码片断--序列化
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- Jedis分片连接池(分布式)
- eclipse在pull时发生冲突报错Checkout conflict with files
- Ubuntu终端连接出错:Couldn’t agree a client-to-server cipher (available: aes128-ctr,aes192-ctr......)
- Vim
- jQuery<5.1>
- 你不得不知道的5道海量数据题
- Jedis分布式+序列化
- node(使用events模块)
- LeetCode hard 335. Self Crossing
- python匹配问题
- 二叉树
- 传输层简介
- 响应式图片的设计
- Ubuntu上搭建mysql服务器及外部访问
- JustOj1264: 顺序查找