用node加redis实现follow,tag,feed系统

https://cnodejs.org/topic/53ad78f2c3ee0b5820f74298

follow,tag,和feed系统都非常适合用redis来实现,以tag系统为例: 用户ltebean要给nodejs加一个标签amazing就是:

sadd user:ltebean:tag:amazing nodejs
sadd user:ltebean:item:nodejs amazing

存一个反向关系是为了即能根据tag查也能根据item查,下面是redis的command:

拿到nodejs所有的标签:

smembers user:ltebean:item:nodejs

拿到tag amazing下所有的item:

smembers user:ltebean:tag:amazing

拿到既打了amazing标签,又打了web标签的item

sunion user:ltebean:tag:amazing user:ltebean:tag:web

下面是nodejs实现的api:

taggie.user(‘ltebean‘).item(‘bootstrap‘).addTag(‘css‘, function(err, res) {});
taggie.user(‘ltebean‘).item(‘bootstrap‘).addTag(‘web‘, function(err, res) {});
taggie.user(‘ltebean‘).item(‘jquery‘).addTag(‘web‘, function(err, res) {});
taggie.user(‘ltebean‘).item(‘jquery‘).addTag(‘js‘, function(err, res) {});
taggie.user(‘ltebean‘).item(‘nodjs‘).addTag(‘js‘, function(err, res) {});

taggie.user(‘ltebean‘).item(‘jquery‘).allTags(function(err, res) {
    console.log("jquery ‘s tag: %s", res);
   // jquery ‘s tag: js,web
});

taggie.user(‘ltebean‘).item().allItems(function(err, res) {
     console.log("all items: %s", res);
    // all items: jquery,nodjs,bootstrap
});

taggie.user(‘ltebean‘).tag(‘web‘).allItems(function(err,res){
    console.log(‘tagged with web: %s‘,res);
    // tagged with web: jquery,bootstrap
});

taggie.user(‘ltebean‘).tag().allTags(function(err,res){
    console.log(‘all tags: %s‘,res);
    // all tags: js,web,css
});

taggie.user(‘ltebean‘).tag([‘web‘,‘js‘]).itemsByInter(function(err,res){
    console.log(‘tagged with web and js: %s‘,res);
    // tagged with web and js: jquery
});

taggie.user(‘ltebean‘).tag([‘web‘,‘js‘]).itemsByUnion(function(err,res){
    console.log(‘tagged with web or js: %s‘,res);
    // tagged with web or js: jquery,nodjs,bootstrap
});

用户follow和feed系统的实现也类似, 最后附上三个项目的地址: taggie: https://github.com/ltebean/taggie user-graph: https://github.com/ltebean/user-graph feedie: https://github.com/ltebean/feedie

时间: 2024-08-05 11:56:32

用node加redis实现follow,tag,feed系统的相关文章

php + Redis 写的类似于新浪微博的feed系统

最近接了一个feed系统的外包,类似于微博那种!客户端是ios和android,服务器用的php,数据库用的是redis.分享下服务器和数据库部分的功能!希望对大家有帮助. 关于redis的介绍,大家可以看这个百度百科!    首先是用户基本信息部分,包含账号,昵称,签名,公司还有头像,我们使用redis的hash结构(一种类似于map键值对的数据结构)结构如下:(大家在做的时候,还是用hgetAll的命令,这样只会有一次的网络请求),注意只是基本信息,诸如玩家的粉丝,关注和帖子,我们采取其他的

秒杀思路: yii2加Redis实现秒杀

整理一些思路 PHP7, yii2加Redis怎么实现秒杀 一个list列表存放秒杀的商品 一个list列表存放秒杀的客户信息 首先读取秒杀商品到商品列表, 然后等待客户秒杀. 每次客户请求, 检查用户列表与商品数量是否大于等于. 如果是就提示已经抢完.下次再来. (这里可以选择方案 是用户下单就减少还是付款再减少) 检查商品的剩余数量是否大于0, 是就减一,并加入客户到列表里面. 否就提示已经抢完.下次再来. (这里可以选择方案 是用户下单就减少还是付款再减少) 每次客户请求, 加入客户到列表

百万用户时尚分享网站feed系统扩展实践

Fashiolista是一个在线的时尚交流网站,用户可以在上面建立自己的档案,和他人分享自己的以及在浏览网页时看到的时尚物品.目前,Fashiolista的用户来自于全球100多个国家,用户达百万级,每日分享的时尚物品超过500万.作为一个以社交.分享的网站,feed系统占据了网站的核心架构,Fashiolista的创始人兼CTO Thierry Schellenbach撰写了一篇博客,分享了自家网站feed系统建设的经验,译文如下: Fashiolista最初是我们作为兴趣在业余时间开发的一个

Feed系统架构资料收集

完全用nosql轻松打造千万级数据量的微博系统 微博feed系统的push和pull模式和时间分区拉模式架构探讨 关于如何构建一个微博型广播 关于如何构建一个微博型广播2 用 mongodb 储存多态消息/提醒类数据 构建高性能的微博系统-再谈新浪微博架构 人人网技术经理张铁安-Feed系统结构浅析 新浪微博Cache设计@TimYang.pdf 人人网技术经理张铁安-Feed系统结构浅析 新浪微博基于MySQL的分布式数据库实践 杨卫华谈新浪微博架构:MySQL和NoSQL Sina微博构架师

人人网张铁安:Feed系统架构分析(转)

原文:http://www.csdn.net/article/2010-07-26/277273 继成功举办首期TUP活动后,日前在北京丽亭华苑酒店鸿运二厅,由CSDN和<程序员> 杂志联合策划组织的TUP第二次活动如期而至,本次活动以Web 2.0技术为主题,聚焦当下火热的社交网.微博架构与实时搜索领域.就相关领域及产品研发背后的技术.产品设计及用户体验话题为与会者提供全开放式的交流 平台.即使是付费沙龙,参会报名人数仍在不断上升,本次活动有超过300人来到现场. 人人网技术经理张铁安 以下

Feed系统架构资料收集(转)

add by zhj:有些链接已经失效,后续会修改. 原文:http://blog.csdn.net/zhangzhaokun/article/details/7834797 完全用nosql轻松打造千万级数据量的微博系统 微博feed系统的push和pull模式和时间分区拉模式架构探讨 关于如何构建一个微博型广播 关于如何构建一个微博型广播2 用 mongodb 储存多态消息/提醒类数据 构建高性能的微博系统-再谈新浪微博架构 人人网技术经理张铁安-Feed系统结构浅析 新浪微博Cache设计

Vue2.0+Node.js+MongoDB全栈打造商城系统

第1章 课程介绍   1-1 课程-导学   1-2 前端框架回顾   1-3 vue概况以及核心思想   1-4 vue框架优缺点对比第2章 Vue基础   2-1 nodejs和npm的安装和环境搭建   2-2 vue环境搭建以及vue-cli使用   2-3 vue配置(上)   2-4 vue配置(下)   2-5 vue基础语法第3章 Vue-router   3-1 路由基础介绍   3-2 动态路由匹配   3-3 嵌套路由   3-4 编程式路由   3-5 命名路由和命名视图

Vue2.0+Node.js+MongoDB 全栈打造商城系统

第1章 课程介绍简单回顾前端近几年的框架模式,了解不同时期下的框架特点.其次介绍Vue框架的背景和核心思想,以及同其它MV*框架的对比.1-1 课程-导学1-2 前端框架回顾1-3 vue概况以及核心思想1-4 vue框架优缺点对比 第2章 Vue基础从0到1,如何搭建一个简单的Vue项目:本章节主要讲解Node和Npm环境的搭建,其次介绍vue-cli脚手架的使用,以及通过详细拆解介绍脚手架生成的配置文件信息,最后给大家介绍了Vue涵盖的基础语法.2-1 nodejs和npm的安装和环境搭建2

项目实战(连载):基于Angular2+Mongodb+Node技术实现的多用户博客系统教程(4)

本章主要讲什么(一句话)? <项目实战:基于Angular2+Mongodb+Node技术实现的多用户博客系统教程(4)> -- 基于Node的Express项目环境框架搭建 一.前言 从本节开始,我们将正式[多用户博客系统]的项目开发工作.首先我们先从后台Node部分开始做起,一步步带领大家完成整个博客系统的开发. 本篇将主要帮助大家把Node环境下的Express框架搭建起来,后继后台将会在这个框架上进行扩展与业务逻辑开发. 二.项目环境 Node.js: v 6.x Express: v