REDIS HSET正确设置过期时间

问题描述 投票:0回答:1
redis-cli INFO SERVER
# Server
redis_version:7.0.5
...


           

因此,在节点缓存一些用户数据时,存在的问题是“EX”不是设置为以秒为单位的过期时间,而是作为字段,其代码如下:

        const resultCached = await redisClient.hset(
            accessToken,
            'user',
            JSON.stringify({
                'username'  : username,
                'passHash'  : passHash,
                'loginToken': accessTokenHash
            }),
            'EX',
            7200
        );

返回此哈希的所有字段的命令可以看到问题,因为返回“EX”作为字段

redis-cli HGETALL '$2a$08$a9dv5bFwxsP0Z0eVUuw9XOOwNq85MvP5XHZbpw1cCgfvjlqeqQs0G'
1) "EX"
2) "7200"
3) "user"
4) "{\"username\":\"xpto1\",\"passHash\":\"$2a$08$MeJDVEAw.JKvuKKlC84gMuy0/dZZ/BOsoZSphxuPJZU.1Ro6W6tA.\",\"loginToken\":\"$2a$08$5Pqd6WDZaw6.D71kbqciA.Bz1USDVzPYGqbnQ4BnQcDhZXwofL6La\"}"

错误,这不应该是一个字段,而是该键/数据的过期配置

~$ redis-cli HGET '$2a$08$a9dv5bFwxsP0Z0eVUuw9XOOwNq85MvP5XHZbpw1cCgfvjlqeqQs0G' 'EX'
"7200"

正确:

$ redis-cli HGET '$2a$08$a9dv5bFwxsP0Z0eVUuw9XOOwNq85MvP5XHZbpw1cCgfvjlqeqQs0G' 'user'
"\"username\":\"xpto1\",\"passHash\":\"$2a$08$MeJDVEAw.JKvuKKlC84gMuy0/dZZ/BOsoZSphxuPJZU.1Ro6W6tA.\",\"loginToken\":\"$2a$08$5Pqd6WDZaw6.D71kbqciA.Bz1USDVzPYGqbnQ4BnQcDhZXwofL6La\"}"

我的问题是,识别为配置参数(“EX”)过期的正确格式是什么,而不是此键的额外字段(请注意,在

set
的情况下,它仅在
hset
出现问题时才按预期正常工作)

node.js node-redis
1个回答
0
投票

使用单独的命令

expire
效果很好,如果可能的话,仍然更愿意使用单个命令。

const resultExpire = 等待 redisClient.expire( 访问令牌, 10 );

© www.soinside.com 2019 - 2024. All rights reserved.