redis 的 Sets, Sorted Sets 資料型態與有時效的key

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) 1redis 127.0.0.1:6379> sadd i5:type:tech chiounan(integer) 1redis 127.0.0.1:6379> smembers i5:type:tech1) "chiounan"2) "twtw"redis 127.0.0.1:6379> sadd i5:type:life chiounan(integer) 1redis 127.0.0.1:6379> sinter i5:type:tech i5:type:life1) "chiounan"redis 127.0.0.1:6379> SISMEMBER i5:type:tech twtw(integer) 1redis 127.0.0.1:6379> SISMEMBER i5:type:life twtw(integer) 0redis 127.0.0.1:6379> SUNION i5:type:life i5:type:tech1) "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) 1redis 127.0.0.1:6379> ZADD i5:scores 12033 chiounan(integer) 1redis 127.0.0.1:6379> ZADD i5:scores 9977 markshu(integer) 1redis 127.0.0.1:6379> ZADD i5:scores 9694 thc(integer) 1redis 127.0.0.1:6379> ZADD i5:scores 26040 sunallen(integer) 1#升冪排序redis 127.0.0.1:6379> ZRANGE i5:scores 0 -11) "seanamph"2) "thc"3) "markshu"4) "chiounan"5) "sunallen"#降冪排序redis 127.0.0.1:6379> ZREVRANGE i5:scores 0 -11) "sunallen"2) "chiounan"3) "markshu"4) "thc"5) "seanamph"#加上 WITHSCORES 列出每元素的分數redis 127.0.0.1:6379> ZREVRANGE i5:scores 0 -1 WITHSCORES1) "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 100001) "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"OKredis 127.0.0.1:6379> ttl gone:after:3mins(integer) -1redis 127.0.0.1:6379> expire gone:after:3mins 180(integer) 1redis 127.0.0.1:6379> ttl gone:after:3mins(integer) 176redis 127.0.0.1:6379> ttl gone:after:3mins(integer) 173redis 127.0.0.1:6379> PERSIST gone:after:3mins(integer) 1redis 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 hiOKredis 127.0.0.1:6379> TTL gone:latter(integer) -1redis 127.0.0.1:6379> EXPIREAT gone:latter 1350807518(integer) 1redis 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"OKredis 127.0.0.1:6379> get gone:60sec"gone after 60 secs"redis 127.0.0.1:6379> ttl gone:60sec(integer) 53


分享到:


相關文章: