django缓存cache的基本使用方法(各种操作)

开启Django Cache配置后,就可以使用缓存服务了,基本用法如下

cache.set(key, value, timeout=DEFAULT_TIMEOUT, version=None)

其中是一个字符串,是一个认可picklable形式的python对象,和参数都是可选的,默认为配置中相应后端的参数,为对应的版本,参考上边关于的解释

cache.get(key, default=None, version=None)

新的参数的意思是,当请求的key不存在时,则返回设置的这个值,而不是默认不存在返回的`None

cache.add(key, value, timeout=DEFAULT_TIMEOUT, version=None)

与类似,只是当add的key不存在时,则新建key,存在则不做任何操作

新建成功则会返回True,否则返回False

cache.get_or_set(key, default, timeout=DEFAULT_TIMEOUT, version=None)

需要2个参数,第一个为key,第二个为key不存在时设置的值。意思是如果key存在,则返回key的值,如果不存在则给key设置一个值

cache.get_many(keys, version=None)

通过传入一个keys列表,以字典格式返回这些列表中key存在的缓存值

cache.set_many(dict, timeout)

通过传入字典,批量设置缓存

cache.delete(key, version=None)

删除一个key

cache.delete_many(keys, version=None)

批量删除key

cache.clear()

清空缓存,需要注意的是这会删除缓存里的所有key,可能包含一些并不是你设置的key

cache.touch(key, timeout=DEFAULT_TIMEOUT, version=None)

更新key的过期时间为timeout设置的值,timeout是可选的,如果不写则默认为设置的值

更新成功则返回True,否则返回False

cache.incr(key, delta=1, version=None)

incr递增一个已存在的int类型的key的值,默认情况下递增幅度为1,通过指定可以设置递增的幅度

cache.decr(key, delta=1, version=None)

与incr递增类似,decr为递减

cache.close()

如果缓存后端已经实现了close()方法,可以通过关闭和缓存的连接

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 缓存可以用于存储一些计算结果、数据库查询结果、模板渲染结果等,从而避免重复计算、查询数据库等操作,提高应用性能。下面是一些 Django 缓存使用场景及示例: 1. 存储计算结果 如果应用中有一些计算操作比较耗时,可以将计算结果存储到缓存中,下次需要使用时直接从缓存中获取,避免重复计算。例如: ``` python from django.core.cache import cache def get_fibonacci_num(n): if n < 2: return n else: key = 'fibonacci_{}'.format(n) result = cache.get(key) if result is not None: return result else: result = get_fibonacci_num(n-1) + get_fibonacci_num(n-2) cache.set(key, result) return result ``` 以上代码使用缓存存储了斐波那契数列的计算结果,避免了重复计算。 2. 存储数据库查询结果 如果应用中有一些查询操作比较耗时,可以将查询结果存储到缓存中,下次需要使用时直接从缓存中获取,避免重复查询数据库。例如: ``` python from django.core.cache import cache from myapp.models import Post def get_latest_posts(): key = 'latest_posts' result = cache.get(key) if result is not None: return result else: result = Post.objects.order_by('-pub_date')[:10] cache.set(key, result) return result ``` 以上代码使用缓存存储了最新的 10 篇文章的查询结果,避免了重复查询数据库。 3. 存储模板渲染结果 如果应用中有一些模板渲染操作比较耗时,可以将模板渲染结果存储到缓存中,下次需要使用时直接从缓存中获取,避免重复渲染。例如: ``` python from django.core.cache import cache from django.template.loader import render_to_string def render_latest_posts(): key = 'latest_posts_html' result = cache.get(key) if result is not None: return result else: posts = get_latest_posts() result = render_to_string('latest_posts.html', {'posts': posts}) cache.set(key, result) return result ``` 以上代码使用缓存存储了最新文章的 HTML 渲染结果,避免了重复渲染。 注意:使用缓存可以提高应用性能,但是需要注意缓存的更新和失效机制,避免使用过期的缓存数据。同时,也需要根据实际情况进行选择和优化,避免缓存占用过多的内存等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值