由于我们在评论中进行了问答,我可能会给出完整的答案。
在单个字符串中保留约 4K-10K 行可能不是一个好习惯。但是您不打算在前端进行任何分页。即使您将参数数量减少到id
, name
, business_id
- 对于该行数,由于以下原因,它也可能不好;
- 您需要获取整体价值,这可能会导致网络问题。尤其是当流量变高时,每个人都会获取那块数据。
- 如果要更新/删除某些行,则需要(get+update+set)/将它们设置为整体(再次网络)
- 您不能使价值的某些部分无效。
- 你不能设置部分 TTL - 你要么过期/保留整个。
这些行的数据不太可能改变。但是,如果它们确实更改或被删除,我如何更新/删除缓存中的单个行,而不是整个缓存?
由于您不需要分页并希望将它们保存在一个键中,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
您可以通过缓存中的单个行删除。您仍然可以通过 using 获取所有数据hgetall
。哈希字段没有部分 TTL(排序集在应用层有一些代码),但哈希比字符串更适合您的用例。