Spring Data 작업 Redis 데이터베이스 상세 정보

4122 단어 springdataredis
Redis는 NOSQL 데이터베이스로 Key-Value 형식으로 데이터를 저장하는데 그 중에서 데이터는 메모리 형식으로 존재하거나 파일 시스템에 오래 지속될 수 있다.Spring data는 Redis를 잘 봉인하여 사용하기에도 매우 적합하다.Redis는 데이터베이스, 캐시, 메시지 중간부품으로 사용할 수 있는 메모리의 데이터 구조 저장 시스템입니다.문자열 (strings), 산열 (hashes), 목록 (lists), 집합 (sets), 질서 집합 (sorted sets), 범위 조회,bitmaps,hyperloglogs, 지리 공간 (geospatial) 인덱스 반경 조회 등 다양한 유형의 데이터 구조를 지원합니다.Redis에는 복제(replication), LUA 스크립팅(Lua scripting), LRU 드라이브 이벤트(LRU eviction), 트랜잭션(transactions)과 서로 다른 단계의 디스크 지속화(persistence)가 내장되어 있으며, Redis 보초(Sentinel)와 자동 구역(Cluster)을 통해 높은 가용성(high availability)을 제공합니다.
1. 시스템 설정, Maven을 사용하여 개발하면pom에서만 가능.xml 파일에 다음과 같은 설정을 추가합니다.

<dependencies>
  <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>1.8.1.RELEASE</version>
  </dependency>
</dependencies>
예를 들어 Spring Data 템플릿을 bean으로 설정하여 직접 사용할 수 있는 곳에 직접 주입할 수 있습니다.

<bean id="jedisConnFactory" 
  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" 
  p:use-pool="true"/>
<bean id="redisTemplate" 
  class="org.springframework.data.redis.core.RedisTemplate" 
  p:connection-factory-ref="jedisConnFactory"/>
2. Redis Template는 다양한 요구 사항에 따라 다음과 같은 작업을 패키지화합니다.

opsForValue() - Operations for working with entries having simple values
opsForList() - Operations for working with entries having list values
opsForSet() - Operations for working with entries having set values
opsForZSet() - Operations for working with entries having ZSet (sorted set) values
opsForHash() - Operations for working with entries having hash values
boundValueOps(K) - Operations for working with simple values bound to a given key
boundListOps(K) - Operations for working with list values bound to a given key
boundSetOps(K) - Operations for working with set values bound to a given key
boundZSet(K) - Operations for working with ZSet (sorted set) values bound to a given key
boundHashOps(K) - Operations for working with hash values bound to a given key
3. 일반적인 작업 예
3.1 Redis Template 주입은 직접 템플릿으로 주입할 수도 있고ops 형식으로 주입할 수도 있습니다. 아래의 예에서 두 가지 방식에 대해 설명했습니다.

public class Example {
  // inject the actual template
  @Autowired
  private RedisTemplate<String, String> template;
  // inject the template as ListOperations
  // can also inject as Value, Set, ZSet, and HashOperations
  @Resource(name="redisTemplate")
  private ListOperations<String, String> listOps;
  public void addLink(String userId, URL url) {
    listOps.leftPush(userId, url.toExternalForm());
    // or use template directly
    template.boundListOps(userId).leftPush(url.toExternalForm());
  }
}
3.2 Bound 시리즈 조작 예시에서 Bound 시리즈 조작의 장점은 한 번만 귀속된 다음에 일련의 조작을 할 수 있다는 데 있다. 코드가 매우 정교하다.

 BoundListOperations<String, Product> mangoOps = redis.boundListOps("solidmango");
  Product popped = mangoOps.rightPop();
  mangoOps.rightPush(product1);
  mangoOps.rightPush(product2);
  mangoOps.rightPush(product3);
3.3 Serializer 설정 예시, 일반적인 상황에서 키와 Value는 서로 다른 방식으로 지구화를 한다. 다음과 같은 예에서 키는 String을 사용하여 지구화를 하고 Value는 잭슨 형식으로 지구화를 한다.

@Bean
public RedisTemplate<String, Cart> redisTemplate(RedisConnectionFactory rcf) {
    RedisTemplate<String, Cart> redis =
    new RedisTemplate<String, Cart>();
    redis.setConnectionFactory(rcf);
    redis.setKeySerializer(new StringRedisSerializer());
    redis.setValueSerializer(
    new Jackson2JsonRedisSerializer<Product>(Product.class));
    return redis;
}
총결산
본고는 Spring Data 조작 Redis의 설정과 개발 방식에 대해 상세한 분석 설명을 했고 설정 부분은 구체적인 설정 방식을 제시했으며 코드 예시 부분은 세 가지 상황으로 나뉘어 구체적인 해결 방안을 제시했기 때문에 여러분에게 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기