select_expire_keys
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
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
	
	
	답글이 올라오면 이메일로 알려드리겠습니다.
	
 


 
  
			 
			