Django 2.2
我需要从特定的数据表中获取4000-10000个数据行(我们称为commonsites
)才能显示一个网页。
我可以缩小到这4000-10000行中的3个字段(id,name,business_id)
我的流量很低。但是我想知道使用caching来获取这4000-10000行是否是一个好主意
这些行的数据不太可能更改。但是,如果确实要更改或删除它们,该如何更新/删除缓存中的单个行而不是整个缓存?
还是一个好主意?
我的安装是:
更新资料
更加清晰的是,该网页是一个检索。发出页面请求后,javascript前端将进行API调用。然后,此API调用将从数据表中提取这4000-10000个数据行。
因此,这些数据行是预先存在的数据。
数据作为API json数据作为json数据中的列表发送。
只是为了清楚起见,不会对数据进行分页。将全部显示。而且我还没有测量数据的大小,所以我不能说数据的大小。我怀疑它会超过5mb。
最佳答案
由于我们在评论中Q / a,我可以给出一个完整的答案。
在单个字符串中保留约4K-10K的行可能不是一个好习惯。但是您不打算在前端进行任何分页。即使将参数的数量减少到id
,name
,business_id
,对于该行数,由于以下原因可能也不是一件好事。
The data for these rows are unlikely to change. But in case they do change or get deleted, how do I update/remove individual rows in the cache, rather than the entire cache?
由于您不需要分页并且希望将其保留在单个键中,因此可以使用
string
代替hash
来满足上面列出的条件。127.0.0.1:6379> hset row 1 "some-json"
(integer) 1
127.0.0.1:6379> hset row 2 "some-json2"
(integer) 1
127.0.0.1:6379> hset row 3 "some-json3"
(integer) 1
127.0.0.1:6379> hset row 4 "some-json4"
(integer) 1
127.0.0.1:6379> hgetall row
1) "1"
2) "some-json"
3) "2"
4) "some-json2"
5) "3"
6) "some-json3"
7) "4"
8) "some-json4"
127.0.0.1:6379> hset row 3 "some-other-json"
(integer) 0
127.0.0.1:6379> hgetall row
1) "1"
2) "some-json"
3) "2"
4) "some-json2"
5) "3"
6) "some-other-json"
7) "4"
8) "some-json4"
127.0.0.1:6379> hdel row 3
(integer) 1
127.0.0.1:6379> hgetall row
1) "1"
2) "some-json"
3) "2"
4) "some-json2"
5) "4"
6) "some-json4"
127.0.0.1:6379>
您可以使用
hset
一次更新单行/多行。您可以通过hdel
从缓存中删除单个行。您仍然可以使用hgetall
一次获取所有数据。哈希字段没有局部TTL(在应用程序层中,排序的集具有一些代码,但在您的用例中,哈希比字符串更适合)。
关于django - 使用缓存以及将其用于Django中4000-10000个数据行的单个页面是一个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62000154/