我们在用Python Django开发秒杀系统的时候,要将Django 查询到商品详细信息保存到Redis缓存中去,但Redis不能直接保存对象,但有什么方法呢?

我们发现可用Python的pickle模块。

pickle模块可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作。

Pickle模块中最常用的函数为:

1、pickle.dumps(obj[, protocol])

函数的功能:将obj对象序列化为string形式,而不是存入文件中。

参数讲解:

  • obj:想要序列化的obj对象。

  • protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

2、pickle.loads(string)

函数的功能:从string中读出序列化前的obj对象。

参数讲解:

  • string:文件名称。

代码示例

.....
#取出商品id
product_id = request.GET.get('product_id')
#构造商品key
product_key = 'product_{}'.format(product_id)
#根据商品key从缓存中取数据
product_detail = getcache(product_key)
#对取出数据进行判断
if product_detail:#如取出了数据,对数据进行序列化读出为对象product_detail =  pickle.loads(product_detail)
#如没有数据
elif   product_detail is None:#从数据库中查询数据product_detail = SaleProducts.objects.filter(id=product_id)#对数据进行序列化,并保存到缓存中setcache(product_key,60*10,pickle.dumps(product_detail))......

缓存相关函数

#设置key,value
def setcache(key,time,value):master.setex(key,time,value)
#读取key\value
def getcache(key):return master.get(key)

对相关技术有兴趣的,可访问我们的课程51CTO学院:升职加薪视频课程:高并发秒杀系统架构分析设计与开发

转载于:https://blog.51cto.com/13340781/2091187

Redis 怎么实现保存Django 查询集相关推荐

  1. django查询集-17

    当查询结果是多个的时候,django-ORM会返回一个 查询集(QuerySet) ,表示从数据库中获取对象的 集合 . 查询集可以使用过滤器进行再次处理. 例如查询阅读量大于20且评论数大于30的书 ...

  2. 【django】查询集QuerySet

    一.概念 Django的ORM中存在 查询集 的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调⽤如下过滤器⽅法时,Django会返回查询集(⽽不是简单的列表): ...

  3. Django框架(13.Django中的查询集)

    查询集 在使用Django中的模型类查询函数:all, filter, exclude, order_by调用这些函数会产生一个查询集,QuerySet类对象可以继续调用上面的所有函数. 查询集特性 ...

  4. sql server限制查询条数_18. Django 2.1.7 查询集 QuerySet

    上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象.Q对象.聚合查询等功能. 不管什么查询,返回的结果都基本是查询集QuerySet,如 ...

  5. Django框架——查询集QuerySet

    目录 1.概念 2.两大特性 (1)惰性执行: (2)缓存: 3.限制查询集 1.概念 Django的ORM中存在查询集的概念. 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合 ...

  6. Django学习笔记(3):使用模型类进行查询(查询函数、F对象、Q对象、聚合函数、查询集、模型类关系、关联查询、自关联、管理器)

    文章目录 1.查询函数 2.F对象 3.Q对象 4.聚合函数 5.Count函数 6.查询集 查询集的特性 对查询集进行切片 判断一个查询集中是否有数据 7.模型类之间的关系 一对多关系 多对多关系 ...

  7. django 两个查询集(querySet)的并集和交集

    一.获取两个同一模型下查询集queryset的并集使用 | 和union方法 # 获取同一模型下两个查询集的并集# 解决代码如下:records = query1 | query2# 如果不想拥有重复 ...

  8. 【Django入门】——查询集QuerySet介绍

    文章目录 1. 懒惰查询 2. 查询缓存 3. 查询切片 4. 判断有无 在文章[Django入门]--通过模型类查询MySQL数据库基本操作中,我们知道函数all().filter().exclud ...

  9. Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站

    Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...

最新文章

  1. MySQL: ERROR 1040: Too many connections”的异常情况1
  2. 三个最简单公式讲完卡尔曼滤波算法
  3. 微信支付 商户Key 支付Key API密钥 的获取
  4. echarts饼状图mysql_echarts饼状图位置设置
  5. ueditor chrome bug
  6. ARMv8体系结构基础04:算术和移位指令
  7. 剑指Offer_12_矩阵中的路径(参考问题:马踏棋盘)
  8. 新疆哈巴河冰雪旅游节开幕 游人沉醉雪舞冰封“第一桦”
  9. 提高COOKIE的安全性--相关解决方案
  10. 技术驱动创新,阿里云开启云网络3.0时代
  11. c++模板类_在 MCU 上使用 C++ 之模板类进阶与线性 Kalman 算法代码
  12. 使用python获取nature系列期刊封面高清图片
  13. 使用无线投屏软件将手机和电脑画面同步
  14. 年薪30~60万,机器学习算法工程师必备能力项
  15. 一起来吐槽:想颠覆大数据行业的FEB,真的具有价值吗?
  16. Golang 函数耗时统计
  17. 【Python黑科技】图片太大不能上传?三种压缩图片大小的方法(代码注释详细)
  18. 微信定向流量_中国移动终于投诚了!微信惊现10G流量包,只要10元?
  19. 机器学习:数据预处理之独热编码(One-Hot)详解
  20. 从诚信的角度探索现代远程教育中的教与学

热门文章

  1. 经验分享:微信小程序外包接单常见问题及流程
  2. velocity自定义标签和指令
  3. 项目松弛时期 团队如何休养生息?
  4. Citrix XenApp 6.0 发布应用程序时 ICO 错误的解决方法
  5. 【Scala-spark.mlib】本地矩阵乘法计算效率比较(稠密稀疏哪家强?)
  6. 富文本编辑_博客的后台富文本编辑和阅读计数
  7. 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...
  8. python拼写检查_拼写检查 - Python文本处理教程™
  9. 树莓派python3_树莓派4没有python3怎么办
  10. mysql常见内置函数_MySQL常用内置函数