前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis之Java调用哨兵 原

Redis之Java调用哨兵 原

作者头像
克虏伯
发布2019-04-15 10:30:04
8010
发布2019-04-15 10:30:04
举报

    最近在使用Redis,记录下。

1.加入依赖

List-1  只是给出与Redis有关的依赖,其它的spring依赖就略

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>1.8.14.RELEASE</version>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

2.spring的xml配置

2.1 哨兵配置

List-2 如何搭建哨兵机制的集群,在此处就略,不描述了

代码语言:javascript
复制
<bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
    <constructor-arg name="master" value="mymaster"/>
    <constructor-arg name="sentinelHostAndPorts">
        <set>
            <value>192.168.0.107:26481</value>
            <value>192.168.0.107:26482</value>
            <value>192.168.0.107:26483</value>
        </set>
    </constructor-arg>
</bean>

2.2 池pool配置

List-3

代码语言:javascript
复制
<bean id="pool" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxTotal" value="30"/>
    <property name="maxIdle" value="10"/>
    <property name="minEvictableIdleTimeMillis" value="100000"/>
    <property name="numTestsPerEvictionRun" value="1024"/>
</bean>

2.3 工厂Factory配置

List-4

代码语言:javascript
复制
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <constructor-arg name="sentinelConfig" ref="redisSentinelConfiguration"/>
    <constructor-arg name="poolConfig" ref="pool"/>
    <property name="hostName" value="localhost"/>
    <property name="port" value="6379"/>
    <property name="database" value="7"/>
</bean>

2.4 redisTemplate配置

List-5

代码语言:javascript
复制
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    <property name="connectionFactory" ref="jedisConnectionFactory"/>
    <property name="keySerializer">
        <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
    </property>
    <property name="valueSerializer">
        <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
    </property>
</bean>

3. 测试

3.1 Redis缓存对象

List-6

代码语言:javascript
复制
/**
 * @author dmj1161859184@126.com 2018-08-23 23:01
 * @version 1.0
 * @since 1.0
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring.xml"})
public class MyRedisTestBase {

}

List-7 由于我们使用了JDK的Serializable作为序列化,所以对象一定要实现Serializable接口,不然会报错的

代码语言:javascript
复制
/**
 * @author dmj1161859184@126.com 2018-09-12 20:51
 * @version 1.0
 * @since 1.0
 */
public class SerializableRedisTemplate extends MyRedisTestBase {
    @Autowired
    private RedisTemplate<Serializable, Serializable> redisTemplate;

    @Test
    public void test1() {
        Address address = new Address();
        address.setCode(getRandomUUID());
        address.setName(getRandomUUID());

        Person person = new Person();
        person.setAge(12);
        person.setName("mjduan");
        person.setAddresses(Arrays.asList(address));

        redisTemplate.opsForValue().set(person.getName(), person);

        Serializable serializable = redisTemplate.opsForValue().get(person.getName());
        Person newPerson = (Person) serializable;
        System.out.println(newPerson);
    }
     
    private String getRandomUUID() {
        return UUID.randomUUID().toString();
    }    
}

3.2 config set

List-8 设置maxmemory的值

代码语言:javascript
复制
    @Test
    public void test2() {
        RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
        //maxmemory的值,单位最好是bytes,因为redis.conf里面就有注释
        connection.setConfig("maxmemory", "1mb");

        List<String> maxmemory = connection.getConfig("maxmemory");
        assertEquals(2, maxmemory.size());
        assertEquals(1L * 1024 * 1024, Long.valueOf(maxmemory.get(1)).longValue());
    }

    在redis命令里面查看结果,如下List-9:

List-9 可以看到List-8中设置的1mb生效了,1*1024*1024=1048576

代码语言:javascript
复制
127.0.0.1:6379[1]> config get maxmemory
1) "maxmemory"
2) "1048576"
127.0.0.1:6379[1]> config get maxmemory
1) "maxmemory"
2) "1048576"
127.0.0.1:6379[1]> select 7
OK
127.0.0.1:6379[7]> config get maxmemory
1) "maxmemory"
2) "1048576"
127.0.0.1:6379[7]>

    如List-9中所示,我们虽然在List-4中设置的database是7,但是从List-9中可以看出,通过config set设置的值是全局生效了。在database7中得到的maxmemory是1048576,在database1中得到的maxmemory也是1048576。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/09/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.加入依赖
  • 2.spring的xml配置
    • 2.1 哨兵配置
      • 2.2 池pool配置
        • 2.3 工厂Factory配置
          • 2.4 redisTemplate配置
          • 3. 测试
            • 3.1 Redis缓存对象
              • 3.2 config set
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档