SELECT Expire Keys


Expire keys 정보를 조회

엔터프라이즈 버전에서는 expire를 member(value) 단위로도 설정할 수 있습니다.
이 경우 키에서 가장 작은 ttl이 expire_keys에 저장됩니다.
아래와 같은 쿼리로 조회할 수 있습니다.
SELET * FROM EXPIRE_KEYS.*;
Datatype 부분에 expire_keys를 지정해서 조회하면 됩니다.
컬럼은 key, ttl 입니다. 여기에서도 ttl은 컬럼으로 제공됩니다.

테스트 데이터 입력: Expire를 입력합니다.
입력 방법: expire key member second(expire time)
대상 데이터 타입: SET, ZSET, HASH

Example

명령>expire myset1 mem30 81100
명령>expire myset1 mem20 81200
명령>expire myset2 40 81300
명령>expire myzset1 value10 81400
명령>expire myzset1 value20 81500
명령>expire myzset2 mem40 81600
명령>expire myname1 name 81700
명령>expire myname1 age 81800
명령>expire subject2 name 81900
명령>expire subject2 kor 82000

SELECT

  • Count(key)보다 count(*)가 더 빠릅니다.
    Count(*)는 키 전체 개수를 한번에 가져오고, count(key)는 키를 하나씩 일일이 셉니다.
  • 기본으로 ttl 순으로 정렬되어 있습니다.

Example

명령>select count(*) from expire_keys.*;   opcode
결과> 0) count(*)
1) 6
명령>select count(key) from expire_keys.*;   opcode
결과> 0) count(key)
1) 6
명령>select key from expire_keys.*;   opcode
결과> 0) key
1) myset1
2) myset2
3) myzset1
4) myzset2
5) myname1
6) subject2
명령>select * from expire_keys.*;   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300
3) myzset1|81400
4) myzset2|81600
5) myname1|81700
6) subject2|81900

ORDER, LIMIT

  • 기본으로 ttl 순으로 정렬되어 있습니다.

Example

명령>select * from expire_keys.* order by key;   opcode
결과> 0) key|ttl
1) myname1|81700
2) myset1|81100
3) myset2|81300
4) myzset1|81400
5) myzset2|81600
6) subject2|81900
명령>select * from expire_keys.* order by key desc;   opcode
결과> 0) key|ttl
1) subject2|81900
2) myzset2|81600
3) myzset1|81400
4) myset2|81300
5) myset1|81100
6) myname1|81700
명령>select * from expire_keys.* order by ttl;   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300
3) myzset1|81400
4) myzset2|81600
5) myname1|81700
6) subject2|81900
명령>select * from expire_keys.* limit 5;   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300
3) myzset1|81400
4) myzset2|81600
5) myname1|81700
명령>select * from expire_keys.* order by key limit 5;   opcode
결과> 0) key|ttl
1) myname1|81700
2) myset1|81100
3) myset2|81300
4) myzset1|81400
5) myzset2|81600
명령>select * from expire_keys.* order by key limit 2,3;   opcode
결과> 0) key|ttl
1) myset2|81300
2) myzset1|81400
3) myzset2|81600

FUNCTIONS

Min(), max(), upper(), length() 등 일반적인 function을 사용할 수 있습니다.

Example

명령>select min(key), max(key) from expire_keys.*;   opcode
결과> 0) min(key)|max(key)
1) myname1|subject2
명령>select key, upper(key), length(key) from expire_keys.*;   opcode
결과> 0) key|upper(key)|length(key)
1) myset1|MYSET1|6
2) myset2|MYSET2|6
3) myzset1|MYZSET1|7
4) myzset2|MYZSET2|7
5) myname1|MYNAME1|7
6) subject2|SUBJECT2|8

WHERE

  • Expire_keys에서는 expire_keys.key*와 같이 사용할 수 있습니다.

Example

명령>select * from expire_keys.* where key <= 'myset1';   opcode
결과> 0) key|ttl
1) myset1|81100
2) myname1|81700
명령>select * from expire_keys.* where key > 'myset1';   opcode
결과> 0) key|ttl
1) myset2|81300
2) myzset1|81400
3) myzset2|81600
4) subject2|81900
명령>select * from expire_keys.* where key = 'myset1';   opcode
결과> 0) key|ttl
1) myset1|81100
명령>select * from expire_keys.* where key != 'myset1';   opcode
결과> 0) key|ttl
1) myset2|81300
2) myzset1|81400
3) myzset2|81600
4) myname1|81700
5) subject2|81900
명령>select * from expire_keys.* where ttl < 100;   opcode
결과> (nil)
명령>select * from expire_keys.* where ttl > 100;   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300
3) myzset1|81400
4) myzset2|81600
5) myname1|81700
6) subject2|81900

GLOB, LIKE, IN

Example

명령>select * from expire_keys.* where key glob 'myset*';   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300
명령>select * from expire_keys.* where key like 'myset%';   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300

BETWEEN, IN

  • BETWEEN, NOT BETWEEN 사용 가능합니다.
  • IN, NOT IN 사용할 수 있습니다.

Example

명령>select * from expire_keys.* where key between 'myset1' and 'myset2';   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300
명령>select * from expire_keys.* where key not between 'myset1' and 'myset2';   opcode
결과> 0) key|ttl
1) myzset1|81400
2) myzset2|81600
3) myname1|81700
4) subject2|81900
명령>select * from expire_keys.* where key in ('myset1','myset2');   opcode
결과> 0) key|ttl
1) myset1|81100
2) myset2|81300
명령>select * from expire_keys.* where key not in ('myset1','myset2');   opcode
결과> 0) key|ttl
1) myzset1|81400
2) myzset2|81600
3) myname1|81700
4) subject2|81900

GROUP

Example

명령>select left(key,5), count(*) from expire_keys.* group by left(key,5);   opcode
결과> 0) left(key,5)|count(*)
1) mynam|1
2) myset|2
3) myzse|2
4) subje|1
명령>select left(key,5), min(key), max(key) from expire_keys.* group by left(key,5);   opcode
결과> 0) left(key,5)|min(key)|max(key)
1) mynam|myname1|myname1
2) myset|myset1|myset2
3) myzse|myzset1|myzset2
4) subje|subject2|subject2

REDIS FUNCTIONS

  • updatetime(): 키 생성/수정 일시를 리턴합니다.
  • type(): 키의 datatype을 리턴합니다.
  • encoding(): 키의 내부 datatype을 리턴합니다.
  • memory(): 키의 메모리 사용량(value 포함)을 리턴합니다.
  • 기타 여러 function을 사용할 수 있습니다.

Example

명령>select key, updatetime(key) from expire_keys.*;   opcode
결과> 0) key|updatetime(key)
1) myset1|2022-04-08 10:21:34
2) myset2|2022-04-08 10:21:34
3) myzset1|2022-04-08 10:21:34
4) myzset2|2022-04-08 10:21:34
5) myname1|2022-04-08 10:21:34
6) subject2|2022-04-08 10:21:34
명령>select key, type(key), encoding(key) from expire_keys.*;   opcode
결과> 0) key|type(key)|encoding(key)
1) myset1|set|hashtable
2) myset2|set|intset
3) myzset1|zset|ziplist
4) myzset2|zset|ziplist
5) myname1|hash|ziplist
6) subject2|hash|ziplist
명령>select key, type(key), encoding(key) from expire_keys.* order by type(key), encoding(key);   opcode
결과> 0) key|type(key)|encoding(key)
1) myname1|hash|ziplist
2) subject2|hash|ziplist
3) myset1|set|hashtable
4) myset2|set|intset
5) myzset1|zset|ziplist
6) myzset2|zset|ziplist
명령>select key, memory(key) from expire_keys.*;   opcode
결과> 0) key|memory(key)
1) myset1|408
2) myset2|74
3) myzset1|127
4) myzset2|325
5) myname1|122
6) subject2|118
명령>select key, memory(key) from expire_keys.* order by memory(key);   opcode
결과> 0) key|memory(key)
1) myset2|74
2) subject2|118
3) myname1|122
4) myzset1|127
5) myzset2|325
6) myset1|408

TTLDATE()

  • TTLDATE(ttl): 만료 시각을 일시로 리턴합니다. 예) 2022-04-09 08:53:14
    ttl은 초로 표시되기 때문에 실제 멤버가 삭제될 일시를 환산해 보아야 하는 불편함이 있습니다. 그래서 ttldate() function을 제공합니다.

Example

명령>select key, ttl, ttldate(ttl) from expire_keys.*;   opcode
결과> 0) key|ttl|ttldate(ttl)
1) myset1|81100|2022-04-09 08:53:14
2) myset2|81300|2022-04-09 08:56:34
3) myzset1|81400|2022-04-09 08:58:14
4) myzset2|81600|2022-04-09 09:01:34
5) myname1|81700|2022-04-09 09:03:14
6) subject2|81900|2022-04-09 09:06:34
명령>select key, ttl, ttldate(ttl) from expire_keys.* where ttl > 0;   opcode
결과> 0) key|ttl|ttldate(ttl)
1) myset1|81100|2022-04-09 08:53:14
2) myset2|81300|2022-04-09 08:56:34
3) myzset1|81400|2022-04-09 08:58:14
4) myzset2|81600|2022-04-09 09:01:34
5) myname1|81700|2022-04-09 09:03:14
6) subject2|81900|2022-04-09 09:06:34

OPCODE


select count(*) from expire_keys.*;

select count(key) from expire_keys.*;

select key from expire_keys.*;

select * from expire_keys.*;

select * from expire_keys.* order by key;

select * from expire_keys.* order by key desc;

select * from expire_keys.* order by ttl;

select * from expire_keys.* limit 5;

select * from expire_keys.* order by key limit 5;

select * from expire_keys.* order by key limit 2,3;

select min(key), max(key) from expire_keys.*;

select key, upper(key), length(key) from expire_keys.*;

select * from expire_keys.* where key <= 'myset1';

select * from expire_keys.* where key > 'myset1';

select * from expire_keys.* where key = 'myset1';

select * from expire_keys.* where key != 'myset1';

select * from expire_keys.* where ttl < 100;

select * from expire_keys.* where ttl > 100;

select * from expire_keys.* where key between 'myset1' and 'myset2';

select * from expire_keys.* where key not between 'myset1' and 'myset2';

select * from expire_keys.* where key glob 'myset*';

select * from expire_keys.* where key like 'myset%';

select * from expire_keys.* where key in ('myset1','myset2');

select * from expire_keys.* where key not in ('myset1','myset2');

select left(key,5), count(*) from expire_keys.* group by left(key,5);

select left(key,5), min(key), max(key) from expire_keys.* group by left(key,5);

select key, updatetime(key) from expire_keys.*;

select key, type(key), encoding(key) from expire_keys.*;

select key, type(key), encoding(key) from expire_keys.* order by type(key), encoding(key);

select key, memory(key) from expire_keys.*;

select key, memory(key) from expire_keys.* order by memory(key);

select key, ttl, ttldate(ttl) from expire_keys.*;

select key, ttl, ttldate(ttl) from expire_keys.* where ttl > 0;


<< Select Expire Members Select Expire Keys Select Info >>

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