• Django QuerySet缓存和惰性机制


    惰性机制:

        在内部。QuerySet在构造,过滤,切片,传递的时候通常查询集不会真正的去数据库查询

           那它会在什么情况下去数据库查询呢?

                    1.迭代(通过循环将值一个个拿出来)

                    2.切片,使用切片语法的step(步长切片)参数,或者是切片只切出一个元素的时候,Django将执行数据库查询,

                    3.直接在控制台打印的时候

                    4.使用len()方法获取长度的时候,底层调用count

                    5.使用list()方法转换类型

                    6.通过if,else去判断是否为空的时候

                    7. 序列化缓存,把查询集的内容存在reis或者内存中

         解释完惰性机制,在来说说缓存,只要重复利用好这个特性,将会提高代码的质量

               1.会在什么时候缓存呢?

                        在只执行一个QuerySet的时候,将会将查询结果缓存在这个对象,后面再查询这个QuerySet,会从缓存中获取,而不去数据库

                        值得注意的是,在新创建的QuerySet的缓存中,缓存是空的

    users = User.objects.all()
    for item in users:
        print(item.mobile) 
    
    users.mobile

        2.什么时候不缓存

                    a.使用数组切片或者索引不会缓存

                    b.简单的打印不缓存   

    users = User.objects.all()
    print(users[0].mobile) # 这种情况是不会缓存的
  • 相关阅读:
    Linux 修改最大线程数
    Openresty+Nginx+Lua+Nginx_http_upstream_check_module 搭建
    SSDB 性能测试
    面向对象:类的成员
    封装,多态,类的约束,super()深入了解
    面向对象:继承
    面向对象:类的空间问题,类之间关系
    面向对象初识
    软件开发规范
    模块(四)包和logging日志
  • 原文地址:https://www.cnblogs.com/Sun-MyBlog/p/12208447.html
Copyright © 2020-2023  润新知