http://github.com/antirez/redis-doc


http://redis.io/documentation


http://projects.spring.io/spring-data-redis/

'redis' 카테고리의 다른 글

redis 참고  (0) 2017.06.10
스프링 데이터 redis 번역  (0) 2017.05.18
http://arahansa.github.io/docs_spring/redis.html

 

고맙게도 번역도 해주시고 감사합니다.


중요한 내용을 발췌하여 옮겨봅니다. 처음 개념만 읽지말고 오퍼레이션까지는 꼭 읽어봅시다.

5.5. RedisTemplate을 통해 객체와 작업하기

대부분의 사용자들은 RedisTemplate을 사용하고 이에 맞는 패키지 org.springframework.data.redis.core를 사용할 것입니다. - template은 사실 그것의 풍부한 특징들에 의해 레디스 모듈의 중심 클래스입니다. 템플릿은 레디스 상호작용을 위해 높은 레벨 추상화를 제공합니다. RedisConnection가 바이너리값(byte arrays)을 받고 리턴하는 로우레벨 메소드를 제공하는 반면 template은 직렬화와 코넥션 관리를 해주며 유저가 그러한 세부사항을 다루는 것에서 자유롭게 해줍니다.

게다가 template 은 특정 타입이나 특정 키를 위해 풍부하고, 고상한(generified:사전없는 단어로 다른 단어로 바꿔서 번역) 인터페이스를 제공하는 작업 뷰 (다음 레디스 명령어 모음reference)를 KeyBound를 통해 밑에 설명한 것처럼 주게 됩니다.

Table 1. 작업 뷰들 Operational views(여기는 원문용어를 그대로 살리는 게 나을 것같다 )
Interface Description

Key Type Operations

ValueOperations

Redis string (or value) operations

ListOperations

Redis list operations

SetOperations

Redis set operations

ZSetOperations

Redis zset (or sorted set) operations

HashOperations

Redis hash operations

HyperLogLogOperations

Redis HyperLogLog operations like (pfadd, pfcount,…​)

Key Bound Operations

BoundValueOperations

Redis string (or value) key bound operations

BoundListOperations

Redis list key bound operations

BoundSetOperations

Redis set key bound operations

BoundZSetOperations

Redis zset (or sorted set) key bound operations

BoundHashOperations

Redis hash key bound operations

한번 설정되면, 템플릿은 스레드세이프하며 여러개의 인스턴스에서 재사용될수 있습니다.

특별히, RedisTemplate 은 대부분의 작업을 위해 자바기반의 직렬화를 사용합니다. 이것은 template에 읽혀지거나 쓰여지는 어떤 객체는 자바를 통해 직렬화/역직렬화 된다는 것을 의미합니다. 직렬화 메커니즘은 tempalte에 의해 쉽게 변경될 수 있으며, Redis 모듈은 org.springframework.data.redis.serializer에서 몇몇 사용가능한 구현체를 제공합니다. 더 많은 정보를 원한다면 Serializers를 보세요. 당신은 또한 어떤 직렬화를 null로 설정하고, enableDefaultSerializer 를 false로 해서 RedisTemplate을 raw byte 배열과 함께 사용할 수 있습니다. serializer가 그것들을 받아들이는 한, 모든 키를 null이 아닌 값으로 설정하는 것을 필요로 하는 template이 null이 될 수 있습니다 ???? (역주: 번역이 애매하다. 원문을 보자!). 더 많은 정보를 위해 각각의 serializer의 자바doc을 보세요~

특정 template view 가 필요한 경우를 위해, view를 의존성으로 등록하고서 주입합니다 : 콘테이너가 자동적으로 opsFor[X]호출을 제거하는 전환을 수행할 것입니다

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true"/>
  <!-- redis template definition -->
  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="jedisConnectionFactory"/>
  ...

</beans>
public class Example {

  // inject the actual template
  @Autowired
  private RedisTemplate<String, String> template; // inject the template as ListOperations

  @Resource(name="redisTemplate")
  private ListOperations<String, String> listOps;

  public void addLink(String userId, URL url) {
    listOps.leftPush(userId, url.toExternalForm());
  }
}

5.6. 문자열 중점 편의 클래스

레디스에 저장되는 키와 밸류 값이 java.lang.String이 되는 것이 흔하기 때문에 레디스 모듈은 두 가지 확장(extension)을 RedisConnection과 RedisTemplate을, StringRedisConnection (그리고 DefaultStringRedisConnection 구현체) 와 StringRedisTemplate을 각자 집중적인 문자열 중점 작업으로 제공합니다. 게다가 String 키에 연결되면, template과 커넥션은 StringRedisSerializer 를 사용하여 저장된 키와 값을 사람이 읽기 쉽게 합니다 (의역함) (같은 인코딩이 레디스와 당신의 코드에서 일어났다고 가정합니다) 예를 들어 :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true"/>

  <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate" p:connection-factory-ref="jedisConnectionFactory"/>
  ...
</beans>
public class Example {

  @Autowired
  private StringRedisTemplate redisTemplate;

  public void addLink(String userId, URL url) {
    redisTemplate.opsForList().leftPush(userId, url.toExternalForm());
  }
}

우리의 다른 스프링 템플릿과 마찬가지로, RedisTemplate 과 StringRedisTemplate는 RedisCallback interface를 통하여서, 개발자가 레디스에게 직접적으로 이야기하는 것을 허용합니다.

public void useCallback() {

  redisTemplate.execute(new RedisCallback<Object>() {
    public Object doInRedis(RedisConnection connection) throws DataAccessException {
      Long size = connection.dbSize();
      // Can cast to StringRedisConnection if using a StringRedisTemplate
      ((StringRedisConnection)connection).set("key", "value");
    }
   });
}

5.7. 직렬화- Serializers

프레임워크의 관점에서, 레디스에 저장된 데이터는 단지 bytes입니다. 레디스 자신이 다양한 타입을 지원하는 반면에 이것들은 대개 데이터가 표현되는 방법보다, 저장되는 방법을 참조합니다. 이것은 정보가 문자열이나 다른 객체로 변환될지 사용자의 결정에 달렸습니다. 유저 (커스텀) 타입과 로우 데이터(혹은 거꾸로)간의 전환은 RedisSerializer 인터페이스(패키지 org.springframework.data.redis.serializer)를 통하여 스프링데이터 레디스를 통해 다루어집니다. (RedisSerializer는 이름이 암시하는 데로 직렬화 프로세스를 관리합니다.) 멋진 여러개의 구현체가 사용가능하며, 이 문서에서 두개가 이미 언급되었습니다(StringRedisSerializer 와 JdkSerializationRedisSerializer) 입니다. 그러나 객체/XML 매핑을 위해서 스프링3부터의OXM 지원을 하는, OxmSerializer도 사용할 수 있고, JSON 형식저장을 위해서라면 JacksonJsonRedisSerializer 이나 Jackson2JsonRedisSerializer 도 사용할 수 있습니다. 저장형식은 값에만 제한된 것이 아니고, 키, 값 , 해위에 어떠한 제약 없이 사용될 수 있습니다.


'redis' 카테고리의 다른 글

redis 참고  (0) 2017.06.10
스프링 데이터 redis 번역  (0) 2017.05.18

+ Recent posts