能否在Redis中存储键名相同但数据不同的内容?
Redis相同键名存储多组数据的方案
Redis的键名是全局唯一的,直接用相同键名存储两组不同数据的话,后写入的数据会覆盖掉之前的,所以不能直接这么存。但可以通过以下几种方式实现多组数据的存储:
使用Redis的**哈希(Hash)**结构:把原来的键作为哈希表的名称,每组数据的标识作为哈希的field,对应的数据作为value。示例命令:
HSET myhash group1 '{"name": "data1"}' HSET myhash group2 '{"name": "data2"}'后续可通过
HGET myhash group1单独获取某组数据,或用HGETALL myhash获取所有组的数据。使用键名前缀/后缀区分:给原键名添加不同的标识后缀或前缀,将其拆分为两个独立的键。示例命令:
SET mykey:group1 '{"name": "data1"}' SET mykey:group2 '{"name": "data2"}'后续可通过
KEYS mykey:*匹配所有相关键,再逐个获取对应数据。使用**列表(List)**结构:如果两组数据无需单独标识,仅需按顺序存储,可将数据依次推入列表。示例命令:
LPUSH mylist '{"name": "data1"}' LPUSH mylist '{"name": "data2"}'用
LRANGE mylist 0 -1可取出所有数据,这种方式适合顺序访问的场景,但无法直接定位某一组数据。
内容的提问来源于stack exchange,提问作者J.J. Beam
相关产品推荐
相关产品推荐

