需要以更快的方式将用户信息存储到 Redis 中,正确的命令是什么? (为了获得更好的表现)

Need to store users infos in a faster way into Redis, what are the right commands to use ? (To get better performances)

我需要存储用户信息,正在寻找正确的方法!

知道这是要存储的信息:

- Addresses
- Full Name
- Phone number
- Location

用户可以根据需要从 HTML 表格中更改此信息。

我需要什么?

将此信息存储在 Redis 服务器中并以更快的方式更新它们的正确方法!

我尝试了什么?

1- 首先我将所有信息存储在 JSON 数组

2- 使用此命令 (SET) 存储 JSON 数组:

$redis->set('user:8:infos', json_encode($infos));  
// And set expiration ...

正在更新信息

然后为了更新信息: 1- 首先拿到钥匙:

$infos = $redis->get('user:8:infos');

2-反序列化JSON数组

3-修改JSON数组的右键和值

4- 序列化 JSON 数组

5- 使用 SET 命令再次将其更新到 Redis 中,就像我们第一次插入它一样

您可以看到为了更新用户的一项信息有很多操作要做,这会占用服务器的很多资源,尤其是在我们有大流量的情况下。

我需要正确的方法(更快并获得更好的性能)来管理用户信息并在 Redis 服务器中操作它们。

我在官方 redis 网站上的某个地方读到 "Sorted sets" 比其他的快?

您的回答将不胜感激,在此先致谢。

如果您的用户信息很简单,例如没有嵌套结构,保存用户信息最好最快的方法是 Redis HASH:

// SET
HSET user1 address XXX
HSET user1 full-name XXX
HSET user1 phone-number XXX
HSET user1 location XXX

// GET single field
HGET user1 address

// UPDATE single field
HSET user1 full-name YYY

但是,如果您的用户信息很复杂,并且具有嵌套结构,例如{"addr":"xxx","location":{"latitude":12.3,"longitude":“23.4”}},您可以使用 RedisJSON or redis-protobuf 来保存用户信息。以便您可以以更好的性能获取或更新单个字段。