Redis入门--头歌实验使用Redis构建支持程序

   日期:2024-12-26    作者:ydc188 移动:http://oml01z.riyuangf.com/mobile/quote/40523.html

可用于处理业务逻辑,作为系统的一部分。除此之外, 还可以帮助和支持系统的其他部分,例如:用于记录日志,进行数据统计,实现配置自动化以及制作一些有趣的实用小程序等。

Redis入门--头歌实验使用Redis构建支持程序

本实训将通过构建日志记录组件,统计网页访问数据以及 地址库小工具三个实际应用场景展示如何使用 帮助和支持应用程序。

任务描述

本关任务:使用 记录日志。

相关知识

为了完成本关任务,你需要掌握:、redis相关命令,、python相关命令。

redis相关命令
lpush

: 将一个值插入到列表头部,保证后插入的在最前面。

 
 
ltrim

让列表只保留指定区间内的元素。

 
 
multi:

事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 命令原子性(atomic)地执行队列里的命令。

 
 
watch

用于监视一个 key ,如果在事务执行之前这个 key 的值被改动,那么事务将被打断。一般和命令配合使用,解决并发过程中重复操作的问题。

例子:商品下单时是需要对库存数进行减库存操作,通过和来锁库存。

 
 
zincrby:

对有序集合中指定成员的分数加上增量 ,用于统计。

, 值: 进行递增

 
 

执行后效果

rename

命令用于修改 的名称

把 修改为

 
 

执行后效果

python相关命令

返回当前时间的时间戳

 
 

返回时间格式化字符串

 
 

执行结果

获取当前小时数:例如当前时间

 
 

执行结果

编程要求

在区域编写函数,实现记录最新日志的功能,具体参数与要求如下

  • 方法参数为日记内容
  • 定义一个 列表,列表为, 列表为加加,要求每次新的日记内容需存在列表头部,并只保留最新的个元素。

注意:value中的时间取

编写函数,实现统计常见日志次数及写入最新日记、并对历史日志记录进行迁移,具体参数与要求如下

  • 在方法中,方法参数为日记内容
  • 定义一个 列表,列表为,列表为
  • 定义一个 字符串,字符串为,字符串为当前小时数
  • 对历史日志记录进行迁移功能实现:当 小于当前时间小时数,则重命名列表,修改列表为,修改 字符串值为当前时间小时数
  • 统计常见日志次数及写入最新日记功能实现:存储列表的成员为,分数自增,并调用方法存最新消息
  • 考虑到历史日记记录迁移的并发问题,使用监控,如果已经修改,则捕获,从而退出。
 
 
任务描述

本关任务:使用 统计网站的每日 和每日 。

相关知识

每日 即一天的页面浏览量或点击量,衡量网站用户访问的网页数量。

每日 即一天的独立访客数,统计一天内访问某站点的用户数(一般以 为依据)。

为了完成本关任务,你需要掌握:、相关命令,、相关命令。

redis相关命令
hincrby

为哈希中指定域的值增加增量 ,用于统计。

 
 
zadd

将成员加入到有序集合中,并确保其在正确的位置上。

 
 
hget

从哈希中获取指定域的值。

 
 
zcount

统计有序集合中分值在 和 之间(包括等于 和 )的成员的数量。

 
 
python相关命令

返回当日日期

 
 

执行结果

返回当日 点时间元组

 
 

执行结果为

返回时间元组对应的时间戳

 
 

执行结果为

编程要求

在区域编写 函数,实现累记 和 值的功能,具体参数与要求如下

  • 方法参数  为访问用户 
  • 累计实现:为哈希键  中的当前日期域的值累加 ,当前日期域格式为
  • 累计实现:将该访问用户  加入到有序集合键  中,并置分值为当前时间

编写 函数,实现统计 值和 值并返回的功能,具体参数与要求如下

  • 方法参数  为需要统计的日期,格式为
  • 统计实现:从哈希键  中得到该日期域的值,记为 
  • 统计实现:统计有序集合键  中分值介于需要统计的日期的  点和  点时间戳之间的成员数量,记为 
  • 返回  值和  值,格式为 
 
 
任务描述

本关任务:使用 编写一个 地址库。

相关知识

为了完成本关任务,你需要掌握:、相关命令,、相关命令,3.如何转换为整数。

redis相关命令

zadd:将成员加入到有序集合中,并确保其在正确的位置上。

 
 

zrevrangebyscore:返回有序集合中分值介于 和 之间(包括等于 或 )的所有成员,并按分值递减(从大到小)的次序排列。

 
 
python相关命令

将字符串转换为十进制数

 
 

打开文件

 
 

执行后得到一个文件对象。

获得 文件的所有行

 
 

执行后得到 文件中所有行的列表。

遍历 文件中的所有行

 
 

执行结果

判断一个字符串是否为数值型字符串

 
 

执行结果

使用分隔符拆分字符串

 
 

执行结果

判断字符串是否包含指定字符

 
 

执行结果

IP如何转换为整数

将 转换为长整型数的过程如下

编程要求

在区域编写 函数,实现将 转换成整数的功能,具体参数与要求如下

  • 方法参数  为待转换的  地址
  • 转换成长整型数实现:使用分隔符  将  地址拆分为四段,将每一段转换为十进制数,并使用迭代的方法将整个  地址转换为长整型数
  • 返回转换好的整数值。

编写 函数,实现将 地址库导入的功能,具体参数与要求如下

  • 方法参数  为  地址库文件名
  • 数据导入实现:打开并遍历该文件,文件第一列为段的起始值,第二列为段的结束值,第三列为段所属的城市,例如

- 若`IP`段起始值包含英文字符或为空串,则不处理该行。 - 若`IP`段起始值是`IP`格式,则调用`ip2long`方法转换为整数。 - 若`IP`段起始值为数值型字符串,则转换为十进制数。 - 为保持有序集合中城市`ID`唯一,将城市`ID`加`_`加当前行索引值做为成员,经过上述处理的`IP`段起始值做为分值存入有序集合 `ip2city` 中。

编写 函数,实现根据输入的地址找到所属的城市的功能,具体参数与要求如下

  • 方法参数  为待查找的  地址
  • 调用方法将待查找的  地址转换成整数,便于在有序集合中查找
  • 查找所属城市实现:从有序集合  中查找出分值小于等于上述整数的所有成员,其中分值最大的成员则为该地址所属的城市
  • 还原城市实现:去除上述城市中字符及其之后的字符
  • 返回城市。

 

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号