func_redis
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 >> |
---|
조회수 :