|
|
小亨
发表于 2008-07-18 16:24:40
|
1楼
|
用memcached,挺方便的。
|
|
|
|
jt.rocky
发表于 2008-07-18 17:11:32
|
2楼
|
数据库连接池 这东东究竟做什么用,有什么好处?
|
|
|
|
duma
发表于 2008-07-19 14:10:08
|
3楼
|
小亨 : 介绍介绍 memcached ~
|
|
|
|
小亨
发表于 2008-07-20 09:01:25
|
4楼
|
memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。
目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcache作者对分布式 cache的理解和解决方案。
memcache完全可以用到其他地方 比如分布式数据库, 分布式计算等领域。
|
|
|
|
kings
发表于 2008-07-20 19:26:55
|
5楼
|
缓存解决不常更新的数据
如果访问实时数据就必须使用db了 所以连接池是必要的
|
|
|
|
duma
发表于 2008-07-24 16:10:46
|
6楼
|
http://www.woodpecker.org.cn/obp/django/django-faq/cache.html
|
|
|
|
duma
发表于 2008-07-24 16:26:52
|
7楼
|
引用一句话:“基于内存的缓存机制有一个缺点: 由于缓存数据保存在内存中, 当服务器崩溃时缓数据将会丢失.谁都知道内存不适合用来保存永久数据, 所以不应该依赖基于内存的缓存来作为你唯一的数据保存方式.实际上, 没有一种 Django 缓存后端适合保存永久数据 -- 他们之所以存在就是为了缓存这一个目的, 而不是永远储存数据 -- 我们在这里指出这一点是因为基于内存的缓存它比另外的方式更加临时化.”
所以应该不适用于电子商务类网站吧.
大家探讨一下。
|
|
|
|
小亨
发表于 2008-07-24 17:18:34
|
8楼
|
对一般的站,如果是modify的最好直接在数据库更新,query的可以从cache里。(当然,这样会出现暂时的数据不一致 :)
|
|
|
|
duma
发表于 2008-07-24 17:45:45
|
9楼
|
刚才研究了一下我发的那个链接:
“缓存单个 view ”要与“文件系统缓存”配合使用。
“缓存单个 view ”用于首页是很好的。
|
|
|
|
duma
发表于 2008-07-24 18:10:46
|
10楼
|
“底层缓存 API”的作用:引用原文--高强度的查询才有必要缓存其结果。
可以这样写:
----products = cache.get('products')
----if not products:
--------products = Product.objects.all()
--------cache.set('products',products,30)
效果很不错。
但不知道 cache 是否是全局的? 可否在多个 views 之间串用,一会儿试试。
|
|
|
|
duma
发表于 2008-07-24 22:39:41
|
11楼
|
刚想到, django 的ORM 是 lazy 型的, 存到 cache 里的会不会只是一个对象而已?
|
|
|
|
小亨
发表于 2008-07-25 14:06:46
|
12楼
|
你这个“对象”的概念是?
|
|
|
|
kings
发表于 2008-07-25 22:33:22
|
13楼
|
cache 是一个hash tab
|
|
|
|
duma
发表于 2008-07-26 00:03:43
|
14楼
|
products = Product.objects.all()
@ 小亨:
谢谢你的纠正,我之前总是将 products 误说为 Product 类的实例(对象),印像有点混乱。确切的说,products 是结果集类。之前的言语有点轻浮,抱歉。
大家都知道 django 的 ORM 是 lazy的,所以以下为个人理解: 就是说只有在真正读取 products 的内容时,才对数据库进行调用。所以在这样的理论下 cache.set('products',products) 会不会有效果呢?
不过,经过GOOGLE和试验一番,cache的效果还是很明显的。
小亨,有什么错误的地方,希望再次纠正。顺便问一句,不你的阿瓜有没有用 cache.set() cache.get()
|
|
|
|
小亨
发表于 2008-07-26 17:29:44
|
15楼
|
@duma
我的理解,比如:你采用了memcached这种cache backend。系统就自动做一些cache。但是如果做的更low level一点,就可以用cache.get, set来做特定的cache。
目前,阿瓜没有显式的调用cache的get, set。
|
|