zoukankan      html  css  js  c++  java
  • redis blog

    IBM 看到的blog如何 存储在redis种

     var ArticleHelper = function () {
         this.ArticleIDSet = "AIDSet"; // 存放文章 ID 的集合 this.ArticleIDPrefix = "Article"; // 文章 KEY 前缀
         this.CommentIDPrefix = "Comment"; // 评论 KEY 前缀 
    };
    
        ArticleHelper.prototype.getArticleIDs = function(){ 
            var that = this; 
            var promise = ArticleMySQLHelper.getIDs().then(function (artis) { 
                if(artis.length == 0 ) {
                    return null; 
               } 
               var _ = []; 
               artis.forEach(
                   function(arti) {
                       _.push(redis.zaddAsync(that.ArticleIDSet, [1, arti.ID]));
                   }
               ); 
               return Q.all(_); 
            });
            return promise;
        };
    //取数据
    ArticleHelper.prototype.getArticle = function(id){
            var that = this; 
            var promise = redis.hgetallAsync(that.ArticleIDPrefix+id).then(function(res) {
                if (res == null) {
                return ArticleMySQLHelper.getOne(id).then(function(article) {
                        return redis.hmsetAsync(that.ArticleIDPrefix+id, article). then(function(res) { 
                            return   Q.resolve(article); 
                        });
                    }); 
            } else {
                    return Q.resolve(res);
            }
        });
        return promise; 
    }
    
    //获取评论
    ArticleHelper.prototype.getComment = function(id) { 
        var that = this; 
        var promise = redis.zrangeAsync(that.CommentIDPrefix+id, [0, -1]).then(function(res) { 
            if (res == null) { 
                var p = ArticleMySQLHelper.getComments(id).then(function(cmmts) { 
                    var _ = []; cmmts.forEach(function(cmmt) {
                         _.push(redis.zaddAsync(that.CommentIDPrefix+id,[cmmt.index, cmmt.body])); });
                          return Q.all(_); 
                        });
                        return p; 
            } else {
                 return  Q.resolve(res); 
            } 
        })
         return promise; 
        }
    //添加评论
    ArticleHelper.prototype.addComment = function(id, comment) { 
        var that = this; 
        var promise = ArticleMySQLHelper.saveComment(id, comment).then(function(res){ 
            return redis.expireAsync(that.ArticleIDPrefix+id, [0]); }); 
            return promise; 
        };
        
    //评论过期
    ArticleHelper.prototype.getArticleExpire = function(id) {
        var that = this; 
        var promise = redis.hgetallAsync(that.ArticleIDPrefix+id).then(function(res) { 
            if (res == null) {
                return ArticleMySQLHelper.getOne(id).then(function(article) { 
                    return redis.hmsetAsync(that.ArticleIDPrefix+id, article).then(function(res) {
                        return  redis.expireAsync(that.ArticleIDPrefix+id, 3600*2); 
                    }).then(function(){ return Q.resolve(article); 
                    });
                 }); 
            } else {
                 return Q.resolve(res); 
            } 
        });
         return promise; 
        }  
    ####这是用到的redis 命令
    zadd
    zrange
    hgetall
    hget
    hmset
    hmget
    expire
    https://www.ibm.com/developerworks/cn/opensource/os-cn-nodejs-redis/index.html
    https://redis.io/commands/hmset
  • 相关阅读:
    IDEA设置类级注释和方法级注释
    简单的后台管理系统demo(基于Spring Boot)
    MyBatis中if test传入0值时不识别
    MySQL插入时间数据与系统时间差8小时
    MySQL按字符串中部分数值排序
    二叉查找树
    40个提升网站用户体验的jQuery插件推荐 40个提升网站用户体验的jQuery插件推荐
    纯CSS3实现的8种Loading动画效果
    Web前端框架汇总
    最大公约数 最小公倍数
  • 原文地址:https://www.cnblogs.com/cbugs/p/11505281.html
Copyright © 2011-2022 走看看