当前位置: 首页 > news >正文

太原网站设计排名深圳网站建设新闻

太原网站设计排名,深圳网站建设新闻,滨州企业网站建设,做不锈钢的网站有哪些目的 本文目的#xff1a;实现获取主页时间线和状态推送功能。#xff08;完整代码附在文章末尾#xff09; 相关知识 在我上一篇文章 《使用Redis构建简易社交网站(2)-处理用户关系》中提到了实现用户关注和取消关注功能。 那这篇文章将教会你掌握#xff1a;1#x…目的 本文目的实现获取主页时间线和状态推送功能。完整代码附在文章末尾 相关知识 在我上一篇文章 《使用Redis构建简易社交网站(2)-处理用户关系》中提到了实现用户关注和取消关注功能。 那这篇文章将教会你掌握1redis基本命令2python基本命令。 redis基本命令 zadd将成员加入到有序集合中并确保其在正确的位置上。 conn redis.Redis() conn.zadd(testzset, member2, 3) conn.zadd(testzset, member1, 2) conn.zadd(testzset, member3, 1) 执行后 member3member1member2 执行结果111 zrange返回有序集合中指定区间内的成员。 conn redis.Redis() conn.zrange(testzset, 0, 1) 执行结果[member3, member1] zrevrange按分值递减的顺序返回有序集合中指定区间内的成员。 conn redis.Redis() conn.zrevrange(testzset, 0, -1) 执行结果[member2, member1, member3] hgetall返回哈希表中所有的域-值对。 conn redis.Redis() conn.hgetall(testhash) 执行结果{field1: 2} hget从哈希中获取指定域的值。 conn redis.Redis() conn.hget(testhash, field1) 执行结果2 pipeline将多条命令按照先后顺序放进一个队列中一般配合execute一同使用原子性atomic地执行队列里的命令。 conn redis.Redis() pipe conn.pipeline(True) # 事务开始 pipe.incr(counter) pipe.incr(counter) pipe.incr(counter) pipe.execute() # 事务执行 执行结果[1, 2, 3]通过下标即可获取对应命令的执行结果。 python基本命令 使用格式化拼接字符串 My name is %s, Im %i years old%(educoder, 2) 执行结果My name is educoder, Im 2 years old 将字符串转换为浮点数 float(1.23) 执行结果1.23 实战例题 编写 get_home_timeline(uid) 函数实现获得主页时间线的功能具体参数与要求如下 方法参数uid为要获取主页时间线的用户编号获取动态编号的实现从存储用户主页时间线的有序集合home:{uid}中按照分值递减的顺序取出所有成员获取动态详情的实现遍历动态编号使用事务一次性获取每个动态编号对应动态详情哈希键post:{pid}的所有域-值对返回主页时间线的实现返回事务执行的结果。 编写 post(uid, content) 函数实现发布动态并将动态推送给粉丝的功能具体参数与要求如下 方法参数uid为要发布动态的用户编号content为要发布的动态内容发布动态的实现调用第一关中实现的create_post方法并接收返回的动态编号若发布失败则取消发布返回None获取发布时间的实现从新发布的动态编号对应的动态详情哈希键post:{pid}中获取posted域更新个人主页的实现将新发布的动态编号存储到个人主页有序集合键profile:{uid}中分值为转为浮点数后的发布时间更新粉丝主页时间线的实现遍历用户的粉丝列表followers:{uid}将新发布的动态编号存储到每个粉丝的主页时间线的有序集合home:{follower_id}中分值为转为浮点数后的发布时间返回发布结果的实现返回新发布的动态编号。 测试说明 测试输入4 预期输出 用户 4 关注 用户 1 关注结果: True测试 post 方法... 创建动态: 1 创建动态: 2 用户 1 的动态列表: [2, 1] 用户 4 的主页时间线动态编号: [2, 1]测试 get_home_timeline 方法... 用户 4 的主页时间线: [{content: NEW post from user 1!!!, uid: 1, user_name: test_user1, id: 2}, {content: This is the first post from user 1, uid: 1, user_name: test_user1, id: 1}] code.py #code.py #-*- coding:utf-8 -*-import re import time import redisconn redis.Redis()# 获得主页时间线 def get_home_timeline(uid, page1, count30):# 请在下面完成要求的功能#********* Begin *********#post_ids conn.zrevrange(home:%s%(uid), 0, -1)pipe conn.pipeline(True)for pid in post_ids:pipe.hgetall(post:%s%(pid))return pipe.execute()#********* End *********## 发布动态并将动态推送给粉丝 def post(uid, content):# 请在下面完成要求的功能#********* Begin *********#pid create_post(uid, content)if not pid:return Noneposted conn.hget(post:%s%(pid), posted)conn.zadd(profile:%s%(uid), pid, float(posted))followers conn.zrange(followers:%s%(uid), 0, -1)pipe conn.pipeline(False)for follower in followers:pipe.zadd(home:%s%(follower), pid, float(posted))pipe.execute()return pid#********* End *********## 关注用户 def follow(uid, other_uid):fkey1 following:%s%(uid)fkey2 followers:%s%(other_uid)if conn.zscore(fkey1, other_uid):return Nonenow time.time()pipe conn.pipeline(True)pipe.zadd(fkey1, other_uid, now)pipe.zadd(fkey2, uid, now)following, followers pipe.execute()posts conn.zrevrange(profile:%s%(other_uid), 0, 100, withscoresTrue)if posts:pipe.zadd(home:%s%(uid), **dict(posts))pipe.hincrby(user:%s%(uid), following, int(following))pipe.hincrby(user:%s%(other_uid), followers, int(followers))pipe.execute()return True# 取消关注 def unfollow(uid, other_uid):fkey1 following:%s%(uid)fkey2 followers:%s%(other_uid)if not conn.zscore(fkey1, other_uid):return Nonepipe conn.pipeline(True)pipe.zrem(fkey1, other_uid)pipe.zrem(fkey2, uid)following, followers pipe.execute()posts conn.zrevrange(profile:%s%(other_uid), 0, -1)if posts:pipe.zrem(home:%s%(uid), *posts)pipe.hincrby(user:%s%(uid), following, -int(following))pipe.hincrby(user:%s%(other_uid), followers, -int(followers))pipe.execute()return True# 创建新用户 def create_user(login_name, real_name):login_name login_name.lower()if conn.hget(users, login_name):return Noneuid conn.incr(user:id)pipe conn.pipeline(True)pipe.hset(users, login_name, uid)pipe.hmset(user:%i%(uid), {login_name: login_name,id: uid,real_name: real_name,followers: 0,following: 0,posts: 0,last_signup: time.time(),})pipe.execute()return uid# 为用户创建新动态 def create_post(uid, content):pipe conn.pipeline(True)pipe.hget(user:%i%(uid), login_name)pipe.incr(post:id)login_name, pid pipe.execute()if not login_name:return Nonepipe.hmset(post:%i%(pid), {id: pid,uid: uid,content: content,posted: time.time(),user_name: login_name,})pipe.hincrby(user:%i%(uid), posts)pipe.execute()return pid read.py #read.py #-*- coding:utf-8 -*-import os import sys import time import redis import pprint from code import *conn redis.Redis() retry_time 0 while True:try:conn.ping()breakexcept redis.exceptions.ConnectionError:os.system(redis-server /dev/null 21 )retry_time 1if retry_time 3:breakpipe conn.pipeline(True) pipe.delete(users, user:id) keys (conn.keys(user:*) conn.keys(followers:*) conn.keys(following:*) conn.keys(post:*) conn.keys(profile:*) conn.keys(home:*) ) if keys:pipe.delete(*keys) pipe.execute()# 创建测试数据 join_str for i in xrange(10):login_name test_user%i%(i1)real_name join_str.join(login_name.split(_)).capitalize()create_user(login_name, real_name)uid int(sys.stdin.readline().strip())print 用户 %i 关注 用户 1%(uid) f_result follow(uid, 1) print 关注结果: str(f_result) printprint 测试 post 方法... content This is the first post from user 1 pid post(1, content) print 创建动态: str(pid) content NEW post from user 1!!! pid post(1, content) print 创建动态: str(pid) my_profile conn.zrevrange(profile:1, 0, -1) print 用户 1 的动态列表: str(my_profile) home_timeline conn.zrevrange(home:%i%(uid), 0, -1) print 用户 %i 的主页时间线动态编号: %(uid) str(home_timeline) printprint 测试 get_home_timeline 方法... my_home get_home_timeline(uid) for info in my_home:info.pop(posted, 404) print 用户 %i 的主页时间线: %(uid) str(my_home)
http://www.lakalapos1.cn/news/24697/

相关文章:

  • 手机网站怎么做推广应税服务网站开发开票
  • 图解asp.net网站开发实战南通网站建设系统方案
  • wordpress设置网站做优化一般几个字
  • 网站建设启动资金预算中国建设局网站首页
  • 三门峡网站建设价格商标设计网站排行
  • 手机手机网站开发seo关键词排名优化怎么做
  • 课程网站开发卷宗wordpress 英文改中文
  • 江苏城乡建设学院网站商务网站网络环境设计
  • 网站制作成都wordpress站点logo
  • 俄文网站策划wordpress微商
  • 网站推广服务网站连锁微信文件传输助手网页版
  • 网站规划与建设进度潜山云建站网站建设
  • 做网站 做应用百度seo推广计划类型包含
  • m 外贸网站简述网站建设的具体步骤
  • 福建建设资格管理中心网站wordpress的系统
  • 付费推广网站中国作文网
  • 郑州专业手机网站制作网站建设是干什么的
  • 企石网站仿做网站模板怎么修改教程
  • 无锡建网站动漫设计与制作就业前景怎么样
  • 物流网站毕业设计公司网站内容规划
  • 网站建设的合理建议wordpress 不显示中文图片
  • 网站开发费用属于哪种无形资产直播软件平台
  • 广州建网站培训网站ping值
  • 嘉兴网站推广公司北京网站制作西安
  • 吴江企业网站制作dw做网站字体 别人电脑显示
  • 大企业网站建设方案广西城乡建设厅证件查询
  • 万源网站建设哈尔滨网站推广服务
  • 网站建设和管理存在的问题百度商城官网
  • 网站建设制作的标准有哪些grace6.1 wordpress
  • 建一个公司网站要多久推广策略图片