spring-data-redis 와 jedis 용법,차이
Redis 는 키 와 5 가지 서로 다른 데이터 구조 유형 간 의 맵 을 저장 할 수 있 습 니 다.이 5 가지 데이터 구조 유형 은 각각 String(문자열),List(목록),Set(집합),Hash(해시)와 Zset(질서 있 는 집합)입 니 다.
redis 와 spring 의 통합 은 일반적으로 spring-data-redis 통합 과 jedis 통합 으로 나 뉘 는데 먼저 이들 의 차 이 를 살 펴 보 자.
1.인용 의존 도가 다르다.
spring-data-redis 에서 사용 하 는 의존 도 는 다음 과 같 습 니 다.
org.springframework.data
spring-data-redis
1.8.9.RELEASE
jedis 에서 사용 하 는 의존 도 는 다음 과 같 습 니 다.
redis.clients
jedis
2.9.0
jar
compile
2.jedis 인 스 턴 스 방식 을 관리 하고 redis 서 비 스 를 조작 하 는 것 이 다 릅 니 다.
spring-data-redis:
org.springframework.data.redis.connection.jedisConnection Factory 를 통 해 관리 합 니 다.즉,공장 류 관 리 를 통 해 설 치 된 모델 bean 을 통 해 redis 서 비 스 를 조작 합 니 다.코드 세그먼트 에는 업무 와 무관 한 모델 세 션 코드 가 대량으로 가득 하고 코드 가 지루 하 며 유지 하기 어렵 습 니 다.예 를 들 어 아래 코드 와 같 습 니 다.
protected RedisTemplate redisTemplate;
public void saveUser(User user) {
redisTemplate.execute(new RedisCallback
RedisTemplate 소개
spring 은 redis Template 대상 을 패키지 하여 redis 에 대한 다양한 작업 을 진행 합 니 다.모든 redis 원생 api 를 지원 합 니 다.RedisTemplate 에서 자주 사용 하 는 인터페이스 방법 을 제공 합 니 다.각각:
RedisTemplate 에서 5 가지 데이터 구조 조작 을 정의 하 였 습 니 다.
redisTemplate.opsForValue();//
redisTemplate.opsForHash();// hash
redisTemplate.opsForList();// list
redisTemplate.opsForSet();// set
redisTemplate.opsForZSet();// set
StringRedisTemplate RedisTemplate
이들 의 관 계 는 String RedisTemplate 가 RedisTemplate 를 계승 하 는 것 이다.양자 의 데 이 터 는 서로 통 하지 않 는 다.즉,StringRedisTemplate 는 StringRedisTemplate 의 데이터 만 관리 할 수 있 고,RedisTemplate 는 RedisTemplate 의 데이터 만 관리 할 수 있다.SDR 에서 기본적으로 사용 하 는 직렬 화 전략 은 두 가지 가 있 는데 하 나 는 String 의 직렬 화 전략 이 고 하 나 는 JDK 의 직렬 화 전략 이다.String RedisTemplate 는 기본적으로 String 의 직렬 화 정책 을 사용 합 니 다.저 장 된 key 와 value 는 모두 이 정책 으로 직렬 화 되 어 저 장 됩 니 다.
RedisTemplate 는 기본적으로 JDK 의 직렬 화 정책 을 사용 합 니 다.저 장 된 key 와 value 는 모두 이 정책 으로 직렬 화 되 어 저 장 됩 니 다.
jedis 방식:
redis.clients.jeds.JedisPool 을 통 해 관리 합 니 다.즉,풀 을 통 해 관리 하고 풀 대상 을 통 해 jedis 인 스 턴 스 를 얻 은 다음 에 jedis 인 스 턴 스 를 통 해 redis 서 비 스 를 직접 조작 하여 업무 와 무관 한 불필요 한 코드 를 제거 합 니 다.예 를 들 어 아래 코드 세 션 과 같 습 니 다.
private JedisPool jedisPool;
public String save(String key,String val) {
Jedis jedis = jedisPool.getResource();
return jedis.set(key, val);
}
공장 류 에서 연못 까지 의 방식 변 화 는 my batis 가 my sql 측 변 화 를 연결 하 는 것 과 같 습 니 다.코드 가 더욱 간결 해 지고 유지 도 쉬 워 집 니 다.Jedis 는 apache comons-pool 2 를 사용 하여 Jedis 자원 풀 을 관리 하기 때문에 JedisPool 을 정의 할 때 중요 한 매개 변 수 는 바로 자원 풀 GenericObject PoolConfig 입 니 다.사용 방식 은 다음 과 같 습 니 다.그 중에서 자원 관리 와 사용 하 는 매개 변수 가 많 습 니 다.
매개 변 수 는 JedisPool 이 자원 이 통제 가능 한 범위 내 에 있 고 스 레 드 안전 을 제공 한 다 는 것 을 설명 합 니 다.그러나 합 리 적 인 GenericObject PoolConfig 설정 은 Redis 를 사용 하여 호위 할 수 있 습 니 다.다음은 그의 중요 한 매개 변 수 를 설명 하고 제안 합 니 다.현재 환경 에서 Jedis 연결 은 자원 이 고 JedisPool 이 관리 하 는 것 은 Jedis 연결 입 니 다.
1.자원 설정 및 사용
max Total:자원 탱크 중 가장 대련 연결 수;기본 값:8 설정 은 다음 절 maxIdle:자원 탱크 에서 최대 남 은 연결 수 를 허용 합 니 다.기본 값:8;사용 제안:다음 절 minIdle:자원 탱크 에서 최소한 의 빈 연결 수 를 확보 하 는 것 을 권장 합 니 다.기본 값:0;사용 제안:다음 블록 WhenExhausted:자원 풀 이 다 떨 어 지면 호출 자가 기 다 려 야 하 는 지 설정 합 니 다.true 일 때 만 아래 의 maxWait Millis 가 유효 합 니 다.기본 값:true;사용 제안:기본 값 maxWaitMillis 를 사용 하 는 것 을 권장 합 니 다.자원 풀 연결 이 다 되면 호출 자의 최대 대기 시간(단 위 는 밀리초)-1:시간 을 초과 하지 않 음 을 표시 합 니 다.사용 제안:기본 값 testOnBorrow 를 사용 하 는 것 을 권장 하지 않 습 니 다.자원 풀 에 연결 을 빌 릴 때 연결 유효성 검사(ping)를 할 지 여부 입 니 다.잘못된 연결 은 제 거 됩 니 다.기본 값:false;사용 제안:업 무량 이 많 을 때 false 로 설정 하 는 것 을 권장 합 니 다.testOnReturn:자원 탱크 에 연결 을 반환 할 때 연결 유효성 검사(ping)를 할 지 여부 입 니 다.잘못된 연결 은 제 거 됩 니 다.기본 값:false;사용 제안:업 무량 이 많 을 때 false 로 설정 하 는 것 을 권장 합 니 다.jmxEnabled:jmx 모니터링 을 시작 할 지 여부 입 니 다.모니터링 에 사용 할 수 있 습 니 다.기본 값:true;사용 제안:오픈 을 권장 하지만 응용 자체 도 오픈 해 야 합 니 다.
2.남 은 자원 모니터링
남 은 Jedis 대상 검 측,다음 네 개의 매개 변 수 를 조합 하여 완성 합 니 다.testWhile Idle 은 이 기능 의 스위치 입 니 다.
testWhile Idle:남 은 자원 모니터링 을 시작 할 지 여부;기본 값:false;사용 제안:true time BetweenEvictionRunsMillis:남 은 자원 의 검 측 주기(단 위 는 밀리초);기본 값:-1:검 측 하지 않 음;사용 제안:권장 설정,주기 자체 선택,기본 값 으로 아래 JedisPoolConfig 의 설정 minEvictable IdleTimeMillis 를 사용 할 수 있 습 니 다.자원 풀 에 있 는 자원 의 최소 남 은 시간(단 위 는 밀리초),이 값 에 도달 하면 남 은 자원 이 삭 제 됩 니 다.기본 값:1000 60 30=30 분;사용 제안:자신의 업무 에 따라 대부분의 기본 값 을 결정 할 수 있 으 며,아래 Jeids PoolConfig 의 설정 을 사용 하 는 것 도 고려 할 수 있 습 니 다.
numTests PerEvictionRun:남 은 자원 검 사 를 할 때 매번 샘플링 수;기본 값:3;사용 제안:자신의 응용 연결 수 에 따라 미세 조정 할 수 있 습 니 다.-1 로 설정 하면 모든 연결 에 대해 남 은 감 측 을 하 는 것 입 니 다.
그러나 본 논문 과 spring 통합 은 JedisPool 을 직접 사용 하지 않 고 ShardedJedisPool 을 사용 했다.왜 일 까?ShardedJedisPool 은 일치 성 하 시 를 통 해 분포 식 저장 을 실현 할 수 있 기 때문이다.shared 일치 성 하 시 는 다음 과 같은 방안 을 사용 합 니 다.1.Redis 서버 노드 구분:각 서버 노드 를 hash 알고리즘 으로 160 개의 가상 노드(가중치 설정 가능)로 나 누고 가상 노드 를 TreeMap 으로 저장 합 니 다.3.각 Redis 서버 의 물리 적 연결 에 대해 LinkedHashMap 으로 저장 합 니 다.4.Key or KeyTag 에 대해 똑 같은 hash 알고리즘 을 사용 합 니 다.그 다음 에 TreeMap 에서 같은 키 hash 보다 큰 노드 를 얻 고 가장 가 까 운 노드 로 저장 합 니 다.key 의 hash 값 이 가상 노드 hash 보다 클 때 첫 번 째 가상 노드 sharded 가 사용 하 는 hash 알고리즘 을 저장 합 니 다:MD5 와 MurmurHash 두 가지;기본적으로 64 비트 의 MurmurHash 알고리즘 을 사용 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.