django 2.2型
我需要从一个特定的数据表中获取4000-10000个数据行(我们称之为 commonsites
)其中包括显示网页。
我可以缩小到4000-10000行中的3个字段(id、name、business\u id)
我的流量很小。但是我想知道使用缓存来获取这些4000-10000行是否是个好主意
这些行的数据不太可能更改。但如果它们确实发生了更改或被删除,如何更新/删除缓存中的单个行,而不是整个缓存?
或者这是个好主意?
我的安装是:
redis==3.3.11#https://github.com/antirez/redis
django redis==4.11.0#https://github.com/niwinz/django-redis
更新
更清晰的是,网页是一个检索。一旦发出页面请求,javascript前端将进行api调用。然后,这个api调用将从datatable获取这些4000-10000个数据行。
所以这些数据行是预先存在的数据。
数据作为api json数据作为json数据中的列表发送。
为了清楚起见,数据不会分页。它将全部显示出来。我还没有测量数据的大小,所以我不能说数据有多大。我怀疑它会超过5mb。
1条答案
按热度按时间o7jaxewo1#
既然我们在评论中有问答,我可以给出一个完整的答案。
在一个字符串中保留~4k-10k行可能不是一个好的做法。但你不打算在前端分页。即使您将参数的数量减少到
id
,name
,business_id
-对于这样的行数,它可能不好,原因如下:;您需要获得整个值,这可能会导致网络问题。尤其是当流量越来越大的时候,每个人都会获取这一大块数据。
如果要更新/删除某些行,则需要(get+update+set)/将它们作为一个整体(再次连接网络)
不能使值的某些部分无效。
你不能设置部分ttl-你要么终止/保留整个ttl。
这些行的数据不太可能更改。但如果它们确实发生了更改或被删除,如何更新/删除缓存中的单个行,而不是整个缓存?
因为您不需要分页,并且希望将它们保存在一个键中,而不是
string
你可以用hash
满足上述条件。你可以用
hset
一次更新一行/多行。您可以通过删除hdel
缓存中的单个行。您仍然可以使用hgetall
. hash字段没有部分ttl(排序集在应用层有一些代码),但是hash比字符串更适合您的用例。