Redis学习

最近在看一本Redis的书(李子骅. Redis入门指南(第2版),记录一个难以理解的地方

小白的博客是使用散列类型键存储文章对象的,其中time字段存储的就是文章的发布时间。现在我们知道ID为“2”、“6”、“12”和“26”的四篇文章的time字段的值分别为“1352619200”、“1352619600”、“1352620100”和“1352620000”(Unix时间)。如果要按照文章的发布时间递减排列结果应为“12”、“26”、“6”和“2”。为了获得这样的结果,需要使用SORT命令的另一个强大的参数:BY。 BY参数的语法为BY参考键。其中参考键可以是字符串类型键或者是散列类型键的某个字段(表示为键名->字段名)。如果提供了 BY 参数,SORT 命令将不再依据元素自身的值进行排序,而是对每个元素使用元素的值替换参考键中的第一个“”并获取其值,然后依据该值对元素排序。就像这样: redis> SORT tag:ruby:posts BY post:->time

说下我的理解,用集合存储tag:ruby:posts,他存储的是文章ID;用散列类型存储文章的ID和发布时间。

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对集合进行排序。就得到了和书本上一致的结果了。

127.0.0.1:6379> sort tag:ruby:posts by post:*->time desc
1) "12"
2) "26"
3) "6"
4) "2"

你可能感兴趣的:(Redis学习)