最近在看一本Redis的書(李子驊. Redis入門指南(第2版),記錄一個(gè)難以理解的地方
小白的博客是使用散列類型鍵存儲(chǔ)文章對(duì)象的,其中time字段存儲(chǔ)的就是文章的發(fā)布時(shí)間。現(xiàn)在我們知道ID為“2”碱璃、“6”、“12”和“26”的四篇文章的time字段的值分別為“1352619200”、“1352619600”作岖、“1352620100”和“1352620000”(Unix時(shí)間)。如果要按照文章的發(fā)布時(shí)間遞減排列結(jié)果應(yīng)為“12”五芝、“26”痘儡、“6”和“2”。為了獲得這樣的結(jié)果枢步,需要使用SORT命令的另一個(gè)強(qiáng)大的參數(shù):BY谤辜。 BY參數(shù)的語法為BY參考鍵。其中參考鍵可以是字符串類型鍵或者是散列類型鍵的某個(gè)字段(表示為鍵名->字段名)价捧。如果提供了 BY 參數(shù)丑念,SORT 命令將不再依據(jù)元素自身的值進(jìn)行排序,而是對(duì)每個(gè)元素使用元素的值替換參考鍵中的第一個(gè)“”并獲取其值结蟋,然后依據(jù)該值對(duì)元素排序脯倚。就像這樣: redis> SORT tag:ruby:posts BY post:->time
說下我的理解,用集合存儲(chǔ)tag:ruby:posts,他存儲(chǔ)的是文章ID推正;用散列類型存儲(chǔ)文章的ID和發(fā)布時(shí)間恍涂。
127.0.0.1:6379> smembers tag:ruby:posts
1) "2"
2) "6"
3) "12"
4) "26"
127.0.0.1:6379> hgetall post:2
1) "id"
2) "2"
3) "time"
4) "1352619200"
然后通過散列表中的time對(duì)集合進(jìn)行排序。就得到了和書本上一致的結(jié)果了植榕。
127.0.0.1:6379> sort tag:ruby:posts by post:*->time desc
1) "12"
2) "26"
3) "6"
4) "2"