spring boot /spring session连codis

codis是基于redis实现缓存集群化的,codis proxy对外部应用来说其实与一个redis 实例是一样的,但是不支持一些命令,但是大部分是没有问题(如果应用不复杂,其实是够用的)。

最近部门布署了一个codis集群,由我小组进行验证。虽然codis有相应的Jodis客户端,但是还是想使用spring 本身的方式去连。


1、spring 连codis 

spring 连codis,其实只要按下面的方式去配置,代码不涉及不支持的命令,是绝对可以跑得起来的。


	

	
	
		
		
		
	

	

	

	
		
		
		
		
		
	

	
		
		
		
		
		
		
			
		
	 

	
		
		
		
		
	



2、spring boot连codis


其实spring boot 连codis proxy很简单。可见:


application.properties

spring.redis.timeout=50000
spring.redis.host=127.0.0.1
spring.redis.port=19000


pom.xml


	org.springframework.boot
	spring-boot-starter-data-redis


Junit test class

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringDataRedisCodis2ApplicationTests {
  
	@Autowired
	RedisTemplate redisTemplate;

	@Test
	public void contextLoads() {
	}

	@Test
	public void get() {

		redisTemplate.opsForValue().set("bbbb", "cc"); 

		System.out.println("b's value: " + redisTemplate.opsForValue().get("bbbb"));
	}
}


3、spring session 连 codis

spring session是个好东西,但是当后端改为codis后,在启动时就会报CONFIG命令不支持。上了github看了相关文档,说是session使用了pub/sub模式,采用以下方式可解决问题。



后来编写类:CodisOperationsSessionRepository其中包名必须要是:org.springframework.session.data.redis


package org.springframework.session.data.redis;


import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisOperations;
import org.springframework.stereotype.Component;


/**
 * Created by claireliu on 2018/1/3.
 */
@Component
public class CodisOperationsSessionRepository extends RedisOperationsSessionRepository {


    public CodisOperationsSessionRepository(RedisConnectionFactory redisConnectionFactory) {
        super(redisConnectionFactory);
    }


    public CodisOperationsSessionRepository(RedisOperations sessionRedisOperations) {
        super(sessionRedisOperations);
    }


    @Override
    public void save(RedisSession session) {
        session.setNew(false);
        super.save(session);
    }
}








application.xml中配置:


class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">













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