func_redis
SQL Redis function
동영상 설명은 아래에 있습니다.
Functions List
여기 소개되는 함수들은 레디스에서만 고유하게 사용할 수 있습니다.
컬럼명으로 반드시 key를 사용해야 합니다.
- VALCNT(key) = LEN(key) = CARD(key) 키가 가지고 있는 값(value)의 개수를 리턴합니다.
- MEMORY(key) 키가 차지하고 있는 메모리 량을 리턴합니다.
- TYPE(key) 레디스 데이터타입 string, list, set, zset, hash, stream을 리턴합니다.
- ENCODING(key) 레디스 인코딩타입(내부 데이터타입)을 리턴합니다.
- TTL(key), TTL(key, value) 만료 시간을 초(second)로 리턴합니다.
- PTTL(key), PTTL(Key, value) 만료 시간을 밀리초(millisecond)로 리턴합니다.
- UPDATETIME(key) 생성 또는 마지막 수정 일시를 리턴합니다.
VALCNT(), LEN(), CARD()
키가 가지고 있는 값(value)의 개수를 리턴합니다.
1) select key,valcnt(key) from zset.*
2) select key,count(*) from zset.* group by key
2번과 같이 group by를 사용하는 것보다 valcnt를 사용하는 것이 훨씬 속도가 빠릅니다.
valcnt(), len(), card() 모두 같은 기능을 합니다. Datatype에 상관없이 어느 것을 사용하셔도 됩니다.
Example
명령> | select key, valcnt(key) from list.my*; |
결과> |
0) key|valcnt(key) 1) mylist1|5 2) mylist2|5 3) mylist3|5 |
명령> | select key, len(key) from list.my*; |
결과> |
0) key|len(key) 1) mylist1|5 2) mylist2|5 3) mylist3|5 |
MEMORY()
키가 차지하고 있는 메모리 량을 리턴합니다.
메모리 사용량이 많은 키를 찾는데 유용합니다.
memory(key): 정확한 메모리 사용량을 계산합니다.
-> 레디스 명령: memory usage key 0
memory(key,5): 샘플로 5개의 멤버(값)가 사용하는 메모리량으로 키가 사용하는 총
메모리량을 계산합니다. 예를 들어 mylist에 100개의 값이 있을 경우 5개 값의 평균이 10 바이트이면
10 byte * 100으로 계산합니다.
-> 레디스 명령: 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 |
명령> | select key, memory(key) from set.my* where memory(key) > 200000;
조회 조건으로 사용 |
결과> |
0) key|memory(key) 1) myset1|205834 |
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()
ttl(key) or ttl(key, value)
Expire 명령으로 설정한 만료 시간을 초(second)로 리턴합니다.
레디스 ttl key 명령과 같은 결과를 리턴합니다.
expire mystr1 3000
expire mystr2 10000
expire mystr3 5000
expire mystr4 20000
expire mystr5 7000
Example
명령> | select key, ttl(key) from string.mystr*; |
결과> |
0) key|value|ttl(key) 1) mystr1|value10|2972 2) mystr2|value30|9978 3) mystr3|value50|4983 4) mystr4|value20|19988 5) mystr5|value40|6993 |
ORDER BY ttl(key)
ttl() 시각 순으로 조회할 수 있습니다.
Example
명령> | select key, value, ttl(key) from string.mystr* order by ttl(key); |
결과> |
0) key|value|ttl(key) 1) mystr1|value10|2972 2) mystr3|value50|4983 3) mystr5|value40|6993 4) mystr2|value30|9978 5) mystr4|value20|19988 |
명령> | select key, value, ttl(key) from string.mystr* order by ttl(key) desc; |
결과> |
0) key|value|ttl(key) 1) mystr4|value20|19981 2) mystr2|value30|9971 3) mystr5|value40|6986 4) mystr3|value50|4976 5) mystr1|value10|2965 |
WHERE ttl(key) =, >=, between
ttl을 다양한 조건으로 사용할 수 있습니다.
같다(=), 특정 시점 이후 또는 이전, 기간으로 조회할 수 있습니다.
Example
명령> | select key, value, ttl(key) from string.mystr* where ttl(key) <= 6000; |
결과> |
0) key|value|ttl(key) 1) mystr1|value10|2946 2) mystr3|value50|4957 |
명령> | select key, value, ttl(key) from string.mystr* where ttl(key) > 6000; |
결과> |
0) key|value|ttl(key) 1) mystr2|value30|9946 2) mystr4|value20|19956 3) mystr5|value40|6961 |
명령> | select key, value, ttl(key) from string.mystr* where ttl(key) between 5000 and 10000; |
결과> |
0) key|value|ttl(key) 1) mystr2|value30|9935 2) mystr5|value40|6950 |
WHERE ttl(key) =, !=
expire가 걸려있지 않는 키를 조회한다.
persist mystr2
persist mystr4
Example
명령> | select key, value, ttl(key) from string.mystr* where ttl(key) = -1; |
결과> |
0) key|value|ttl(key) 1) mystr2|value30|-1 2) mystr4|value20|-1 |
명령> | select key, value, ttl(key) from string.mystr* where ttl(key) != -1; |
결과> |
0) key|value|ttl(key) 1) mystr1|value10|2946 2) mystr3|value50|4956 3) mystr5|value40|6966 |
TLL(key, value)
Expire 명령으로 member(value)에 설정한 만료 시간을 초(second)로 리턴합니다.
SET, ZSET, HASH에 expire member를 설정할 수 있습니다.
레디스 ttl key member 명령과 같은 결과를 리턴합니다.
Expire가 설정되어 있지 않으면 -1을 리턴합니다.
sadd myset1 AAA
expire myset1 AAA 3600
ttl(key, value)는 enterprise 7.3.2 부터 사용 가능합니다.
Example
명령> | select key, value, ttl(key,value) from set.*; |
결과> |
0) key|value|ttl(key,value) 1) myset1|BBB|2646 2) myset1|CCC|-1 3) myset2|FFF|-1 4) myset2|EEE|2664 5) myset3|JJJ|2680 6) myset3|III|-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 |
PTLL(key, value)
Expire 명령으로 member(value)에 설정한 만료 시간을 밀리초(millisecond)로 리턴합니다.
SET, ZSET, HASH에 expire member를 설정할 수 있습니다.
레디스 pttl key member 명령과 같은 결과를 리턴합니다.
Expire가 설정되어 있지 않으면 -1을 리턴합니다.
sadd myset1 AAA
expire myset1 AAA 3600
pttl(key, value)는 enterprise 7.3.2 부터 사용 가능합니다.
Example
명령> | select key, value, pttl(key,value) from set.*; |
결과> |
0) key|value|pttl(key,value) 1) myset1|BBB|2639205 2) myset1|CCC|-1 3) myset2|FFF|-1 4) myset2|EEE|2657453 5) myset3|JJJ|2673053 6) myset3|III|-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 |
ORDER BY updatetime(key)
키 생성 또는 갱신 시각(updatetime) 순으로 조회할 수 있습니다.
Example
명령> | select key, updatetime(key) from list.* order by updatetime(key); |
결과> |
0) key|updatetime(key) 1) mylist1|2022-01-29 16:13:32 2) mylist2|2022-01-29 16:13:32 3) mylist3|2022-01-29 17:45:51 |
명령> | select key, updatetime(key) from list.* order by updatetime(key) desc; |
결과> |
0) key|updatetime(key) 1) mylist3|2022-01-29 17:45:51 2) mylist1|2022-01-29 16:13:32 3) mylist2|2022-01-29 16:13:32 |
WHERE updatetime(key) =, glob, >=, between
Updatetime을 다양한 조건으로 사용할 수 있습니다.
같다(=), glob/like, 특정 시점 이후 또는 이전, 기간으로 조회할 수 있습니다.
Example
명령> | select key, updatetime(key) from list.* where updatetime(key) = '2022-01-29 17:45:51'; |
결과> |
0) key|updatetime(key) 1) mylist3|2022-01-29 17:45:51 |
명령> | select key, updatetime(key) from list.* where updatetime(key) glob '2022-01-29*'; |
결과> |
0) key|updatetime(key) 1) mylist1|2022-01-29 16:13:32 2) mylist2|2022-01-29 16:13:32 3) mylist3|2022-01-29 17:45:51 |
명령> | select key, updatetime(key) from list.* where updatetime(key) >= '2022-01-29'; |
결과> |
0) key|updatetime(key) 1) mylist1|2022-01-29 16:13:32 2) mylist2|2022-01-29 16:13:32 3) mylist3|2022-01-29 17:45:51 |
명령> | select key, updatetime(key) from list.* where updatetime(key) between '2022-01-20' and '2022-01-30'; |
결과> |
0) key|updatetime(key) 1) mylist1|2022-01-29 16:13:32 2) mylist2|2022-01-29 16:13:32 3) mylist3|2022-01-29 17:45:51 |
Updatetime()을 이용한 키 삭제
Example
명령> | |
결과> |
동영상 설명
Redis SQL Redis Functions
<< Functions | Redis functions | Date functions >> |
---|