redis+php微博功能的redis数据结构设计总结(四)
概述:
1.完全采用redis作为数据库实现微博的登录
2.发布
3.微博的显示
4.实现整个功能使用了redis的string,list,hashes四个数据类型,以及string类型的数值自增功能
一、用户信息
将数据以string类型存储
incr global:userid (存储用户自增id)
set user:userid:1:username zhangshan
set user:userid:1:password 1212121212
set user:username:zhangshan:userid 1
二、关注与粉丝
将关注他人与自己粉丝数据以set集合类型存储
sadd followed:1 2 (将用户id2存入成id的粉丝)
sadd following:1 3 (用户id1关注用户id3)
三、微博发布
将微博发布分为
1.发布微博内容并以hash类型存储微博发布的内容相关信息
incr global:postid (存储微博自增id)
hset post:postid:$postid userid 2 (存储微博的用户id)
hset post:postid:$postid username dongzi (存储微博的用户id)
hset post:postid:$postid time 1466020851 (存储微博的发布时间)
hset post:postid:$postid content 这是一条微博内容 (存储微博内容)
2.获取用户的所有粉丝及用户自身的id
smembers followed:2 (获取用户id2的所有粉丝)
3.将发布的postid与用户信息关联
lpush recivepost:3 $postid (将用户发布的最新id$postid给用户id3)
4.单独建立一个list类型存入自己发送的所有微博id
lpush userpostid:1 $postid
源码下载地址:https://github.com/lisiqiong/learning/tree/master/rweibo
redis+php微博功能的redis数据结构设计总结(四)的更多相关文章
- Redis变慢?深入浅出Redis性能诊断系列文章(二)
(本文首发于"数据库架构师"公号,订阅"数据库架构师"公号,一起学习数据库技术) 本篇为Redis性能问题诊断系列的第二篇,本文主要从应用发起的典型命令使用上进 ...
- redis+php实现微博功能(一)
(一).微博功能概况 微博用户账号注册 微博用户登录 微博发布 添加微博好友(粉丝) 微博推送 微博冷数据写入mysql数据库 (二).redis数据结构设计 这节分享微博用户注册与登录:我们完全采用 ...
- redis在微博与微信等互联网应用笔记
Redis实战redis在微博与微信等互联网应用实例讲解全集 1. 对象缓存 id user balance 1 john 1200 2 tom 3000 对于这种存储,redis可以使用mset o ...
- 用Redis实现Session功能
0.什么是Redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API ---维基百科 1.与其他用户状态保存方 ...
- 使用 Redis 实现排行榜功能
排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如“用户积分榜”.如果没有实效性一直按照总榜来排,可能榜首总是几个老用户,对 ...
- 就publish/subscribe功能看redis集群模式下的队列技术(一)
Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中 ...
- 基于内存,redis,mysql的高速游戏数据服务器设计架构
转载请注明出处,欢迎大家批评指正 1.数据服务器详细设计 数据服务器在设计上采用三个层次的数据同步,实现玩家数据的高速获取和修改. 数据层次上分为:内存数据,redis数据,mysql数据 设计目的: ...
- 使用 Redis 实现排行榜功能 (转载 https://segmentfault.com/a/1190000002694239)
排行榜功能是一个很普遍的需求.使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择. 一般排行榜都是有实效性的,比如"用户积分榜".如果没有实效性一直按照总榜来排,可能榜 ...
- Redis配置文件主要功能说明
原文地址:http://blog.csdn.net/htofly/article/details/7686436 配置文件参数说明: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改 ...
随机推荐
- 安装ectouch点击安装按钮无反应
首先按F12: 看看”控制台“或者”网络“是否说找不到页面404 如果出现404,则是/mobile/index.php?m=install&c=index&a=importing方法 ...
- 上下行分流下行负载方式和能ping通但不能打开
1 下行线路负载方式选择 目的端口+协议 否则有可能出现微信443端口图片打不开的情况. 2.彭ping通但是打不开的情况下将上行线路mtu值改小 由1500改为1450
- Web框架之Django-20-基于mysql数据库的连接
Web框架之Django-20-基于mysql数据库的连接 想要连接mysql首先需要安装pymysql这个驱动 然后在app的init文件中引入驱动 import pymysql pym ...
- querySelectorAll 与jquery.find 与htmlcollection 的区别
querySelector 和 querySelectorAll 规范定义 querySelector 和 querySelectorAll 方法是 W3C Selectors API Level 1 ...
- HDU 3779 Railroad(记忆化搜索)
Railroad Time Limit : 4000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Subm ...
- LeetCode OJ:Rotate List(旋转链表)
Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1 ...
- LeetCode OJ:Decode Ways(解码方法)
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- Linux:cd命令详解
cd 用来变更用户所在目录的 绝对路径:路径的写法一定由根目录 "/" 写起.例如 /usr/local/mysql 这就是绝对路径.相对路径:路径的写法不是由根目录 " ...
- (四) ffmpeg filter学习-filter命令学习
http://blog.csdn.net/joee33/article/details/51946712 http://blog.csdn.net/tkp2014/article/details/53 ...
- 更换pip源,解决pip install安装包慢的问题
而pip是很强大的Python包安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以最好是将使用的pip源更换一下,这样就能解决被墙导致的装不上库的问题.网上有很多可用的源,例如豆瓣:http ...