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 >> |
|---|
