Redis 시작하기 - String
Strings
Redis 문자열 유형은 Redis 키와 연결할 수 있는 가장 간단한 값 유형입니다. Memcached의 유일한 데이터 유형이므로 신규 사용자가 Redis에서 사용하는 것도 매우 자연스러운 일입니다.
Redis 키는 문자열이므로 문자열 유형도 값으로 사용할 때 문자열을 다른 문자열에 매핑합니다. 문자열 데이터 형식은 HTML 조각 또는 페이지 캐싱과 같은 다양한 사용 사례에 유용합니다.
redis-cli를 사용하여 문자열 유형을 약간 사용해 보겠습니다
(모든 예제는 이 자습서에서 redis-cli를 통해 수행됨).
> set mykey somevalue
OK
> get mykey
"somevalue"
SET과 GET 명령을 사용하여 볼 수 있듯이 문자열 값을 설정하고 검색하는 방법입니다. SET은 키가 문자열이 아닌 값과 연결된 경우에도 키가 이미 존재하는 경우 키에 이미 저장된 기존 값을 대체합니다. 따라서 SET은 할당을 수행합니다.
값은 모든 종류의 문자열 (바이너리 데이터 포함) 일 수 있습니다.
(예 : 값 안에 jpeg 이미지를 저장할 수 있음)
값은 512MB 보다 클 수 없습니다.
SET 명령에는 추가 인수로 제공되는 흥미로운 옵션이 있습니다. 예를 들어 키가 이미 존재하는 경우 SET에 실패하도록 요청하거나 그 반대로 키가 이미 존재하는 경우에만 성공하도록 요청할 수 있습니다.:
> set mykey newval nx
(nil)
> set mykey newval xx
OK
문자열이 Redis의 기본 값이더라도 문자열로 수행할 수 있는 흥미로운 작업이 있습니다. 예를 들어, 하나는 원자성 증분입니다. 원자성(atomicity)은 데이터베이스 시스템에서 ACID 트랜잭션 특성 중의 하나입니다. 하나의 원자 트랜잭션은 모두 성공하거나 또는 실패하는 데이터베이스 운용의 집합이다. 원자성의 보증은 데이터베이스의 부분적인 갱신으로 더 큰 문제가 야기되는 것을 방지합니다. :
> set counter 100
OK
> incr counter
(integer) 101
> incr counter
(integer) 102
> incrby counter 50
(integer) 152
INCR 명령은 문자열 값을 정수로 구문 분석하고 1씩 증가시킨 다음 마지막으로 가져온 값을 새 값으로 설정합니다.
INCRBY, DECR 및 DECRBY와 같은 다른 유사한 명령이 있습니다.
내부적으로는 항상 동일한 명령이며 약간 다른 방식으로 작동합니다.
INCR이 원자적이라는 것은 무엇을 의미합니까? 동일한 키에 대해 INCR을 발행하는 여러 클라이언트라도 경쟁 조건에 빠지지 않습니다. 예를 들어, 클라이언트 1은 “10”을 읽고 클라이언트 2는 동시에 “10”을 읽고 둘 다 11로 증가하고 새 값을 11로 설정하는 경우는 발생하지 않습니다. 최종 값은 항상 12이며 읽기-증분-집합 작업은 다른 모든 클라이언트가 동시에 명령을 실행하지 않는 동안 수행됩니다.
문자열에서 작동하기위한 여러 명령이 있습니다.
예를 들어, GETSET 명령은 키를 새 값으로 설정하고 이전 값을 결과로 리턴합니다.
예를 들어 웹 사이트에서 새 방문자를 받을 때마다 INCR을 사용하여 Redis 키를 증가시키는 시스템이 있는 경우 이 명령을 사용할 수 있습니다. 이 정보는 한 번에 한 번씩 수집하여 증분을 한 번도 손실하지 않고 수집할 수 있습니다. 키를 GETSET 할 수 있으며 새 값 “0”을 할당하고 이전 값을 다시 읽을 수 있습니다.
단일 명령에서 여러 키의 값을 설정하거나 검색하는 기능은 대기 시간을 줄이는 데에도 유용합니다.
이러한 이유로 MSET 및 MGET 명령이 있습니다.:
> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"
단일 명령에서 여러 키의 값을 설정하거나 검색하는 기능은 대기 시간을 줄이는 데에도 유용합니다. 이러한 이유로 MSET 및 MGET 명령이 있습니다. Altering and querying the key space 특정 유형에 정의되지 않았지만 키 공간과 상호 작용하는 데 유용한 명령이 있으므로 모든 유형의 키와 함께 사용할 수 있습니다.. 예를 들어, EXISTS 명령은 주어진 키가 데이터베이스에 존재하는지 여부를 알리기 위해 1 또는 0을 반환하는 반면, DEL 명령은 값이 무엇이든 키 및 관련 값을 삭제합니다.
> set mykey hello
OK
> exists mykey
(integer) 1
> del mykey
(integer) 1
> exists mykey
(integer) 0
예제에서 DEL 자체가 키가 제거되었는지 (존재했는지) 여부에 따라 1 또는 0을 반환하는 방법을 볼 수 있습니다 (해당 이름의 키가 없음).. 많은 키 공간 관련 명령이 있지만 위의 두 명령은 지정된 키에 저장된 값의 종류를 반환하는 TYPE 명령과 함께 필수적인 명령입니다.:
> set mykey x
OK
> type mykey
string
> del mykey
(integer) 1
> type mykey
none
Key expiration 계속 진행하기 전에 저장하는 값 유형에 관계없이 작동하는 중요한 Redis 기능인 키 만료를 살펴봐야 합니다. 키 만료를 사용하면 “Time to Live” 또는 “TTL”이라고도 하는 키에 대한 시간 제한을 설정할 수 있습니다. 생존 시간이 경과하면 키가 자동으로 파괴됩니다.
키 만료에 대한 몇 가지 중요한 참고 사항:
• 초 또는 밀리초 정밀도를 사용하여 둘 다 설정할 수 있습니다.
• 그러나 만료 시간 해상도는 항상 1밀리초입니다.
• 만료에 대한 정보는 디스크에 복제되고 유지되며, Redis 서버가 중지된 상태로 유지되는 시간은 사실상 경과합니다.
(즉, Redis는 키가 만료되는 날짜를 저장함).
EXPIRE 명령을 사용하여 키의 만료 설정:
> set key some-value
OK
> expire key 5
(integer) 1
> get key (immediately)
"some-value"
> get key (after some time)
(nil)
두 번째 호출이 5초 이상 지연되었으므로 두 GET 호출 사이에 키가 사라졌습니다. 위의 예에서는 만료를 설정하기 위해 EXPIRE를 사용했습니다 (만료를 제거하고 키를 영원히 지속시키기 위해 PERSIST를 사용할 수있는 것처럼 이미 만료 된 키에 다른 만료를 설정하는 데에도 사용할 수 있습니다). 그러나 다른 Redis 명령을 사용하여 만료 된 키를 만들 수도 있습니다. 예를 들어 SET 옵션 사용:
> set key 100 ex 10
OK
> ttl key
(integer) 9
위의 예제에서는 문자열 값이 100이고 만료 시간이 10초인 키를 설정합니다. 나중에 TTL 명령이 호출되어 키의 남은 생존 시간을 확인합니다. 밀리초 단위로 만료를 설정하고 확인하려면 PEXPIRE 및 PTTL 명령과 SET 옵션의 전체 목록을 확인하십시오. .
댓글남기기