SpringMVC集成RedisTemplate

欢迎使用Markdown编辑器写博客

redis.xml


    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <constructor-arg>
            <bean class="org.springframework.data.redis.connection.RedisStandaloneConfiguration"
                  c:host-name="IP" c:port="6379"/>
        constructor-arg>
    bean>

    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">        
        <property name="minIdle" value="5"/>        
        <property name="maxIdle" value="100"/>        
        <property name="maxTotal" value="300"/>        
        <property name="maxWaitMillis" value="3000"/>        
        <property name="testOnBorrow" value="true"/>
    bean>
    
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory"/>
        <property name="keySerializer" ref="stringRedisSerializer"/>
        <property name="valueSerializer" ref="stringRedisSerializer"/>
        <property name="hashKeySerializer" ref="stringRedisSerializer"/>
        <property name="hashValueSerializer" ref="stringRedisSerializer"/>
    bean>

程序中

在需要使用redis类上注入RedisTemplate

	@Autowired
    private RedisTemplate<String, String> redisCache;

第一个string代表key类型,第二个string代表value类型,redis是key、value形式的,所以第二个string可以改为object,根据需求注入

5种数据结构操作

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

操作字符串

使用:redisTemplate.opsForValue().set("name","tom");
结果:redisTemplate.opsForValue().get("name")  输出结果为tom

redisTemplate.opsForValue().set("name","tom",10, TimeUnit.SECONDS);
结果:redisTemplate.opsForValue().get("name")由于设置的是10秒失效,十秒之内查询有结果,十秒之后返回为null

操作List

使用:redisTemplate.opsForList().leftPush("list","java");
     redisTemplate.opsForList().leftPush("list","python");
     redisTemplate.opsForList().leftPush("list","c++");
结果:返回的结果为推送操作后的列表的长度
1
2
3

操作Hash

使用:redisTemplate.opsForHash().put("redisHash","name","tom");
     redisTemplate.opsForHash().put("redisHash","age",26);
     redisTemplate.opsForHash().put("redisHash","class","6");
	 System.out.println(redisTemplate.opsForHash().entries("redisHash"));
结果:{age=26, class="6", name=tom}

操作Set

使用:System.out.println(template.opsForSet().members("setTest"));
     System.out.println(template.opsForSet().members("setTest2"));
     System.out.println(template.opsForSet().intersect("setTest","setTest2"));
结果:[aaa, ccc]
	 [aaa]
	 [aaa]

操作Zet

使用:System.out.println(template.opsForZSet().range("zset1",0,-1));
     System.out.println(template.opsForZSet().remove("zset1","zset-6"));
     System.out.println(template.opsForZSet().range("zset1",0,-1));
结果:[zset-1, zset-2, zset-3, zset-4, zset-5, zset-6]
	 [zset-1, zset-2, zset-3, zset-4, zset-5]

你可能感兴趣的:(架构)