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
返事がかかってなれば、メールでお知らせします。