最近在使用Redis,记录下。
List-1 只是给出与Redis有关的依赖,其它的spring依赖就略
<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>
List-2 如何搭建哨兵机制的集群,在此处就略,不描述了
<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>
List-3
<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>
List-4
<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>
List-5
<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>
List-6
/**
* @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接口,不然会报错的
/**
* @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();
}
}
List-8 设置maxmemory的值
@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
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({});