最近在使用Redis,記錄下。java
List-1 只是給出與Redis有關的依賴,其它的spring依賴就略redis
<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 如何搭建哨兵機制的集羣,在此處就略,不描述了spring
<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-4bash
<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-5dom
<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接口,否則會報錯的spa
/** * @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的值code
@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:xml
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。