SQL Redis function


Functions List

여기 소개되는 함수들은 레디스에서만 고유하게 사용할 수 있습니다.
컬럼명으로 반드시 key를 사용해야 합니다.

  • VALCNT(key)   키가 가지고 있는 값(value)의 개수를 리턴합니다.
  • MEMORY(key)   키가 차지하고 있는 메모리 량을 리턴합니다.
  • TYPE(key)   레디스 데이터타입 string, list, set, zset, hash, stream을 리턴합니다.
  • ENCODING(key)   레디스 인코딩타입(내부 데이터타입)을 리턴합니다.
  • TTL(key)   만료 시간을 초(second)로 리턴합니다.
  • PTTL(key)   만료 시간을 밀리초(millisecond)로 리턴합니다.
  • UPDATETIME(key)   생성 또는 마지막 수정 일시를 리턴합니다.

VALCNT()

키가 가지고 있는 값(value)의 개수를 리턴합니다.
1) select key,valcnt(key) from zset.*
2) select key,count(*) from zset.* group by key
2번과 같이 group by를 사용하는 것보다 valcnt를 사용하는 것이 훨씬 속도가 빠릅니다.

Example

명령>select key, valcnt(key) from list.my*;
결과> 0) key|valcnt(key)
1) mylist1|5
2) mylist2|5
3) mylist3|5

MEMORY()

키가 차지하고 있는 메모리 량을 리턴합니다.
메모리 사용량이 많은 키를 찾는데 유용합니다.
memory(key): 정확한 메모리 사용량을 계산합니다.
    -> 레디스 명령: memory usage key 0
memory(key,5): 샘플로 5개의 값이 사용하는 메모리만 계산합니다.
    -> 레디스 명령: memory usage key 5

Example

명령>select key, memory(key) from list.my*;
결과> 0) key|memory(key)
1) mylist1|990
2) mylist2|1256
3) mylist3|879
명령>select key, memory(key) from set.my* order by memory(key) desc limit 3;
  메모리 사용량이 많은 순서로 3개 조회  
결과> 0) key|memory(key)
1) myset1|205834
2) myset2|170386
3) myset3|164506
명령>select sum(memory(key)) from set.*;   Set이 사용하는 총 메모리량 조회  
결과> 0) sum(memory(key))
1) 62386918

TYPE()

레디스 데이터타입 string, list, set, zset, hash, stream을 리턴합니다.
레디스 type key 명령과 같은 결과를 리턴합니다.

Example

명령>select key, type(key) from string.myint1;
결과> 0) key|type(key)
1) myint1|string
명령>select key, type(key) from list.mylist1;
결과> 0) key|type(key)
1) mylist1|list
명령>select key, type(key) from set.myset1;
결과> 0) key|type(key)
1) myset1|set

ENCODING()

레디스 인코딩타입(내부 데이터타입) raw, embstr, int, quicklist, intset, hashtable, ziplist, skiplist, stream 을 리턴합니다.
레디스 object encoding key 명령과 같은 결과를 리턴합니다.
TYPE   ENCODING
String: raw, embstr, int
List: quicklist (ziplist+linked list)
Set: hashtable, intset
ZSet: skiplist, ziplist
Hash: hashtable, ziplist
Stream: stream

Example

명령>select key,encoding(key) from string.myint1;
결과> 0) key|encoding(key)
1) myint1|int
명령>select key,encoding(key) from string.mystr1;
결과> 0) key|encoding(key)
1) myint1|embstr
명령>select key, encoding(key) from list.mylist1;
결과> 0) key|encoding(key)
1) mylist1|quicklist
명령>select key, encoding(key) from set.myset1;
결과> 0) key|encoding(key)
1) myset1|hashtable

TTL()

Expire 명령으로 설정한 만료 시간을 초(second)로 리턴합니다.
레디스 ttl key 명령과 같은 결과를 리턴합니다.

Example

명령>select key, ttl(key) from string.mystr*;
결과> 0) key|ttl(key)
1) mystr1|990
2) mystr2|47
3) mystr3|-1
4) mystr4|-1
5) mystr5|-1

PTTL()

Expire 명령으로 설정한 만료 시간을 밀리초(millisecond)로 리턴합니다.
레디스 pttl key 명령과 같은 결과를 리턴합니다.

Example

명령>select key, pttl(key) from string.mystr*;
결과> 0) key|ttl(key)
1) mystr1|758655
2) mystr2|44356
3) mystr3|-1
4) mystr4|-1
5) mystr5|-1

UPDATETIME()

생성 또는 마지막 수정 일시를 리턴합니다.
레디스에는 해당하는 명령이 없습니다. 레디스는 update time을 관리하지 않습니다. Update time은 Enterprise 버전에 관리합니다.
Update time은 AOF/RDB 파일에 저장되므로 레디스 서버 재시작 시에도 유지됩니다.
커뮤니터 버전에서 데이터를 가져왔을 경우 "1970-01-01"로 표시됩니다.

Example

명령>select key, updatetime(key), value from string.mystr1;
결과> 0) key|updatetime(key)|value
1) mystr1|2020-12-23 13:22:52.597|value10
명령> append mystr1 BBBBB
결과> (integer) 12
명령>select key, updatetime(key), value from string.mystr1
결과> 0) key|updatetime(key)|value
1) mystr1|2020-12-26 11:41:25.583|value10BBBBB

LIST

데이터 추가(push), 삭제(pop) 등 마지막 변경 일시를 조회할 수 있습니다.
이것은 Set, ZSet, Hash도 같습니다.

Example

명령>select key,updatetime(key) from list.mylist1;
결과> 0) key|updatetime(key)
1) mylist1|2020-12-23 13:22:52.601
명령>rpush mylist1 value60
결과> (integer) 6
명령>select key,updatetime(key) from list.mylist1;
결과> 0) key|updatetime(key)
1) mylist1|2020-12-26 11:44:18.281
명령>rpop mylist1
결과> "value60"
명령>select key,updatetime(key) from list.mylist1;
결과> 0) key|updatetime(key)
1) mylist1|2020-12-26 11:44:59.849


<< Select Union Redis functions Date functions >>

조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.