Tim*_*sen 1 caching redis jedis
我正在尝试将 Redis 配置为 Java 应用程序中的缓存层。具体来说,Redis 的预期用途是维护会话状态。应用程序中的每个用户将表示为:
我对如何使用 Redis 的哈希感到困惑。接口为Jedis
:
Jedis#hset(byte[] key, byte[] field, byte[] value)
Run Code Online (Sandbox Code Playgroud)
也就是说,Redis 哈希有一个键,键又指向另一个字段和值的映射。
我应该使用什么设计:
对于上面的第二点,如果我想使条目过期,则必须在键级别而不是字段级别完成。但是,这意味着每个 UUID 都必须是散列中的一个单独的键,目前尚不清楚这是否是一个好的 Redis 设计。
将 Redis 哈希用于会话状态是很常见的。标准方法是使用会话 ID 作为键,并将哈希字段用于会话状态的其余部分。这种设计具有以下理想特性:
我相信这符合您的要求。
您使用的短语“Redis 哈希有一个键”和“哈希中的键”让我认为您误解了哈希的工作原理。关键是散列的名称,如果你愿意的话,不是它的成员。该HSET
签名是指定要修改(密钥)的哈希,什么字段和值来设置它。
这是创建会话的示例(使用 Redis 命令):
HMSET session:123 userId 5 last_login 2019-02-13 ...
EXPIRE session:123 2592000
Run Code Online (Sandbox Code Playgroud)
然后您可以通过以下方式获取会话数据:
HGET session:123 last_login
Run Code Online (Sandbox Code Playgroud)
或设置它:
HSET session:123 last_login 2019-02-18
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1723 次 |
最近记录: |