redis档次提高(主从、哨兵)与spring结合
2017-05-02 08:39
218 查看
redis主从
redis哨兵
redis与spring整合
3:编写测试类
4:备注
a:此哨兵中没有配置redis的密码
b:请使用redis短连接,操作一次断开一次,否则如果主redis挂了切换不到哨兵配置修改之后的主redis
c:还有其他方式的配置,请再补充
“`
1:创建从redis目录,在原有redis服务中复制如下文件: a:redis-benchmark b:redis-cli c:redis.conf d:redis-server 2:修改redis.conf配置文件 a:修改服务端口号,保证端口号唯一 port 6380 b:添加从配置 slaveof 127.0.0.1 6379 3:启动服务,查看从redis是否存在主redis的数据(./redis-server redis.conf) 4:备注 a:需要自己创建从redis相关目录 b:从redis只有读取权限
redis哨兵
1:创建从哨兵目录,在redis安装目录中复制如下文件: a:redis-sentinel 2:添加哨兵配置文件-sentinel.conf port 16379 #**端口唯一** dir "/usr/redis-sen/6379/temp" #**临时目录** daemonize yes #protected-mode no logfile "/usr/redis-sen/6379/sentinel.log" #**日志文件** sentinel monitor redisMaster 192.168.203.142 6379 1 #**主redis及别名** sentinel down-after-milliseconds redisMaster 5000 #**5秒钟检测一次** sentinel failover-timeout redisMaster 15000 #sentinel auth-pass redisMaster r123 #**认证密码** # Generated by CONFIG REWRITE sentinel config-epoch redisMaster 144 sentinel leader-epoch redisMaster 144 #sentinel known-slave redisMaster 192.168.203.141 6380 sentinel known-slave redisMaster 192.168.203.142 6380 #**从redis** sentinel current-epoch 144 3:启动服务,查看从哨兵进程是否存在(./redis-server redis.conf) a:启动服务 ./redis-sentinel sentinel.conf b:查看服务 ps aux|grep redis-sentinel 4:备注 a:如果主redis挂了,哨兵回去修改从redis的配置文件,和哨兵本身配置文件,将从的redis修改为主的redis b:最好自己手动测试一下
redis与spring整合
1:spring+maven,添加相关jar包: a:spring-data-redis b:jedis 2:添加spring-jedis.xml配置文件 <bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration"> <property name="master"> <bean class="org.springframework.data.redis.connection.RedisNode"> <property name="name" value="redisMaster"></property> </bean> </property> <property name="sentinels"> <set> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="192.168.203.142"></constructor-arg> <constructor-arg name="port" value="16379"></constructor-arg> </set> </property> </bean> <bean id="jeidsConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" > <constructor-arg ref="redisSentinelConfiguration"></constructor-arg> </bean> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="jeidsConnectionFactory" />
3:编写测试类
package com.raiyi.redis.spring.sen; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath*:spring-mvc.xml", "classpath*:spring-jedis.xml", }) public class RedisMSTest { @Resource(name = "redisTemplate") RedisTemplate<String, String> api; @Resource(name = "redisTemplate") ValueOperations<String, Object> voOper; @Test public void ms() { new Thread() { public void run() { for (int i = 0; i < 111111111; i++) { api.execute(new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { byte[] key = ("tmpKey").getBytes(); byte[] value = ("tmpValue" + System.currentTimeMillis() + "..." + Math.random()).getBytes(); connection.set(key, value); return true; } }); try { Thread.sleep(2000L); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start(); new Thread() { public void run() { while (true) { api.execute(new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { byte[] key = ("tmpKey").getBytes(); String result = new String(connection.get(key)); System.out.println(result); return true; } }); try { Thread.sleep(2000L); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start(); while (true) { } } }
4:备注
a:此哨兵中没有配置redis的密码
b:请使用redis短连接,操作一次断开一次,否则如果主redis挂了切换不到哨兵配置修改之后的主redis
c:还有其他方式的配置,请再补充
“`
相关文章推荐
- Redis搭建哨兵模式并且与spring结合
- Docker下redis与springboot三部曲之二:安装redis主从和哨兵
- 【Redis】Redis的基本安装及使用、Jedis的基本使用、spring-data-redis的集成、主从模式、哨兵模式
- 四:redis主从读写分离,哨兵模式与spring的集成
- SpringBoot整合redis哨兵主从服务
- SpringBoot整合redis哨兵主从服务
- redis-jedis--spring-哨兵
- redis主从集群搭建及容灾部署(哨兵sentinel)
- Redis整合Spring结合使用缓存实例
- Redis整合Spring结合使用缓存实例
- redis与spring结合使用
- redis 主从 配置和哨兵监控
- redis主从集群搭建及容灾部署(哨兵sentinel)
- spring 结合redis的例子
- Redis整合Spring结合使用缓存实例(转)
- Redis整合Spring结合使用缓存实例(三)
- redis客户端jedis连接和spring结合
- spring结合redis如何实现数据的缓存
- spring 结合 redis 例子 (转)
- Redis学习总结(3)——Redis整合Spring结合使用缓存实例