博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django-redis和redis-py
阅读量:6703 次
发布时间:2019-06-25

本文共 2828 字,大约阅读时间需要 9 分钟。

项目之前使用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/

转载地址:http://pkblo.baihongyu.com/

你可能感兴趣的文章
读书笔记: CLR篇 (让你了解C#.Net的实质) (20111219更新)
查看>>
Red Hat Enterprise Linux 各版本详细说明
查看>>
Xshell如何设置,当连接断开时保留Session,保留原文字
查看>>
解决matplotlib库在PyCharm和命令行都无法正常显示问题
查看>>
(一)Linux实操之——权限、任务调度、磁盘分区
查看>>
浅谈javascript中的作用域
查看>>
VS2010 运行速度加快方法(转)
查看>>
HDOJ---2577 How to Type[DP(两个DP数组)]
查看>>
Java性能总结三(转)
查看>>
Cocos2d-x for Windows Phone 8 发布
查看>>
android调用系统电话薄,实现增删改查。
查看>>
Delphi多媒体设计之TMediaPlayer组件(七)
查看>>
生产者消费者问题理解与Java实现
查看>>
python之排序操作及heapq模块
查看>>
《设计模式》2.创建型模式
查看>>
针对于iosAPP内嵌H5,-webit-overflow-scrolling:touch;产生空白情况
查看>>
深入浅出JavaScript运行机制
查看>>
LeetCode 272 Closest Binary Tree Traversal II 解题思路
查看>>
html中表单提交
查看>>
video自动播放 隐藏播放控制条,并且用点击 video 元素的时候 控制暂停和播放...
查看>>