【发布时间】:2018-08-19 17:16:45
【问题描述】:
我正在学习 Redis,以及自从它是内存数据库以来它的速度如何。在我的 Django 应用程序中,我有一个包含大约 1500 行的 Postgres 表。该模型只有两个字段“名称”和“发生”。为了测试查询内存不足的对象比从我相信存储在磁盘上的本地数据库中查询的速度快多少,我创建了两个查询
1) 使用 Django 对象管理器通过查询进行简单排序
2) Redis 服务器上的 ZRANGE 命令,从 Redis 排序集。
在进行这两个查询之后,我发现从 Redis 排序集中获取相同数量的项目所花费的时间是进行 Postgres 查询所花费的 250 倍。这是为什么呢?
脚本
import json
import redis
import datetime
from django.http import HttpResponse
from django.shortcuts import render
from wikipedia.models import Word
redis_server = redis.Redis("localhost")
def get_word_results(request):
now = datetime.datetime.now()
words = Word.objects.all().order_by('-occurrence')
after = datetime.datetime.now()
diff = (after - now).total_seconds() * 1000
print(diff)
rnow = datetime.datetime.now()
words_redis = redis_server.zrange(name='myzset', start=0, end=-1, withscores=True)
rafter = datetime.datetime.now()
diff2 = (rafter - rnow).total_seconds() * 1000
print(diff2)
结果
0.199
48.048
【问题讨论】:
标签: django postgresql time redis