项目之前使用memcache做缓存,现在转到redis,改写几个语句的事情,然后就这种我把django-redis和py-redis搞混了,记录一下。
django默认使用memcache做缓存,这里的操作一般是cache.get() cache.set()这种,要想操作使用from django.core.cache import cache就可以了。
具体安装及操作见:http://blog.beginman.cn/blog/83/ (好像跑题了啊喂)
django现在可以使用redis做缓存,但是使用cache默认不能操作redis,这个时候就出现了django-redis了,一个开源的。
这个是要安装的,然后配置就可以使用了,但是据说性能不够高,官方文档见https://niwinz.github.io/django-redis/latest/
而py-redis是一个python的库,用来操作redis,效率已经不错了,操作也比较简单。
类似与import redis r.set() r.get() r.lpush() r.lpop() 这种操作。
文档见:https://github.com/andymccurdy/redis-py
r.rpop() r.rpush()
示例:
In [2]: import redisIn [3]: r = redis.StrictRedis(host='localhost', port=6379, db=0)In [4]: r.set('a', 'abc')Out[4]: TrueIn [5]: r.get('a')Out[5]: 'abc'In [6]: r.get('b')In [7]: r.setex('b', 30, 'bcd') # 设置过期时间,第一次读在30s内,有结果,第二次过了30s就没有内容了Out[7]: TrueIn [8]: r.get('b')Out[8]: 'bcd'In [9]: r.get('b')In [10]: r.lpush('l', 1)Out[10]: 1LIn [11]: r.lpop('l')Out[11]: '1'In [12]: r.llen()---------------------------------------------------------------------------TypeError Traceback (most recent call last)in ()----> 1 r.llen()TypeError: llen() takes exactly 2 arguments (1 given)In [13]: r.llen('l')Out[13]: 0In [14]:
In [20]: r.delete('a')Out[20]: 1In [21]: r.get('a')
In [22]: r.exists('a')Out[22]: False
In [23]: pipline = r.pipeline() In [24]: pipline.sepipline.sentinel pipline.sentinel_monitor pipline.sentinel_slaves pipline.setexpipline.sentinel_get_master_addr_by_name pipline.sentinel_remove pipline.set pipline.setnxpipline.sentinel_master pipline.sentinel_sentinels pipline.set_response_callback pipline.setrangepipline.sentinel_masters pipline.sentinel_set pipline.setbit In [24]: pipline.set('a', 'aaaaaaaaaaaaaaaa')Out[24]: StrictPipeline>>In [25]: pipline.set('b', 'bbbbbbbbbbbbbbbb')Out[25]: StrictPipeline >>In [26]: pipline.execupipline.execute pipline.execute_command In [26]: pipline.execute()Out[26]: [True, True]
Pipelines are a subclass of the base Redis class that provide support for buffering multiple commands to the server in a single request. They can be used to dramatically increase the performance of groups of commands by reducing the number of back-and-forth TCP packets between the client and server.
参考见:
https://github.com/andymccurdy/redis-py
https://redis-py.readthedocs.io/en/latest/