TTL (Time To Live) 是指出key有時效的屬性,時間到了就不見了。
Sets
沒有分序列的集合,不同於有序列的陣列,元素也不會有重覆。
SADD 將元素推進集合。
SMEMBERS 列出該集合所有元素。
SISMEMBER 查某元素是否屬該集合。
SINTER 列出兩集合的交集的元素。
SUNION 列出兩集合聯集的元素。
SPOP 隨機移出集合裡的一元素。
SREM 從集合移出一個或多個元素。
redis 127.0.0.1:6379> sadd i5:type:tech twtw
(integer) 1
redis 127.0.0.1:6379> sadd i5:type:tech chiounan
(integer) 1
redis 127.0.0.1:6379> smembers i5:type:tech
1) "chiounan"
2) "twtw"
redis 127.0.0.1:6379> sadd i5:type:life chiounan
(integer) 1
redis 127.0.0.1:6379> sinter i5:type:tech i5:type:life
1) "chiounan"
redis 127.0.0.1:6379> SISMEMBER i5:type:tech twtw
(integer) 1
redis 127.0.0.1:6379> SISMEMBER i5:type:life twtw
(integer) 0
redis 127.0.0.1:6379> SUNION i5:type:life i5:type:tech
1) "chiounan"
2) "twtw"
redis 127.0.0.1:6379> SPOP i5:type:tech
"chiounan"
redis 127.0.0.1:6379> SREM i5:type:tech twtw
(integer) 1
Sorted Sets
同樣是集合,但元素是再加上數值,而可依每元素的數值做排序。
redis 127.0.0.1:6379> ZADD i5:scores 7515 seanamph
(integer) 1
redis 127.0.0.1:6379> ZADD i5:scores 12033 chiounan
(integer) 1
redis 127.0.0.1:6379> ZADD i5:scores 9977 markshu
(integer) 1
redis 127.0.0.1:6379> ZADD i5:scores 9694 thc
(integer) 1
redis 127.0.0.1:6379> ZADD i5:scores 26040 sunallen
(integer) 1
#升冪排序
redis 127.0.0.1:6379> ZRANGE i5:scores 0 -1
1) "seanamph"
2) "thc"
3) "markshu"
4) "chiounan"
5) "sunallen"
#降冪排序
redis 127.0.0.1:6379> ZREVRANGE i5:scores 0 -1
1) "sunallen"
2) "chiounan"
3) "markshu"
4) "thc"
5) "seanamph"
#加上 WITHSCORES 列出每元素的分數
redis 127.0.0.1:6379> ZREVRANGE i5:scores 0 -1 WITHSCORES
1) "sunallen"
2) "26040"
3) "chiounan"
4) "12033"
5) "markshu"
6) "9977"
7) "thc"
8) "9694"
9) "seanamph"
10) "7515"
#算出分數 5000 ~ 10000 的元素個數
redis 127.0.0.1:6379> ZCOUNT i5:scores 5000 10000
(integer) 3
#列出分數 5000 ~ 10000 的元素
redis 127.0.0.1:6379> ZRANGEBYSCORE i5:scores 5000 10000
1) "seanamph"
2) "thc"
3) "markshu"
#增加某元素的分數
redis 127.0.0.1:6379> ZINCRBY i5:scores 1 thc
"9695"
#列出某元素的分數
redis 127.0.0.1:6379> ZSCORE i5:scores thc
"9695"
有時效的key
透過 expire 的指令,可設定某key在幾秒後 key 被刪除。
TTL 可看key剩多少秒將被刪除。
PERSIST 可取消掉倒數刪除的作用,而讓該key沒有expire的屬性。
redis 127.0.0.1:6379> set gone:after:3mins "2012-10-21 15:57:06 +0800"
OK
redis 127.0.0.1:6379> ttl gone:after:3mins
(integer) -1
redis 127.0.0.1:6379> expire gone:after:3mins 180
(integer) 1
redis 127.0.0.1:6379> ttl gone:after:3mins
(integer) 176
redis 127.0.0.1:6379> ttl gone:after:3mins
(integer) 173
redis 127.0.0.1:6379> PERSIST gone:after:3mins
(integer) 1
redis 127.0.0.1:6379> ttl gone:after:3mins
(integer) -1
也可指定某個時間expire,時間指定需用unix timestamp格式,
例如:2012-10-21 16:18:44 +0800 換算成 1350807518
redis 127.0.0.1:6379> set gone:latter hi
OK
redis 127.0.0.1:6379> TTL gone:latter
(integer) -1
redis 127.0.0.1:6379> EXPIREAT gone:latter 1350807518
(integer) 1
redis 127.0.0.1:6379> TTL gone:latter
(integer) 268
也可再設key的同時也設key的有效時間:
redis 127.0.0.1:6379> SETEX gone:60sec 60 "gone after 60 secs"
OK
redis 127.0.0.1:6379> get gone:60sec
"gone after 60 secs"
redis 127.0.0.1:6379> ttl gone:60sec
(integer) 53