美文网首页
Redis学习

Redis学习

作者: NeXTCDO | 来源:发表于2017-06-02 14:10 被阅读13次

    最近在看一本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学习

          本文链接:https://www.haomeiwen.com/subject/jcxufxtx.html