Redis指令HSET和HMSET有什么区别

Redis指令HSET和HMSET有什么区别

在Redis使用过程中,发现Redis hash的两个指令HSET和HMSET非常类似,搜索了一下,差别在于:HSET/HMSET将单个/多个field - value(域-值)对设置到哈希表key中,然而在使用时HSET也可以做到。

127.0.0.1:6379[1]> hset people name Sam age 28 sex male
(integer) 3
127.0.0.1:6379[1]> hmset people1 name Anny age 27 sex female
OK

结果并没有什么差异:

127.0.0.1:6379[1]> hgetall people
1) "name"
2) "Sam"
3) "age"
4) "28"
5) "sex"
6) "male"
127.0.0.1:6379[1]> hgetall people1
1) "name"
2) "Anny"
3) "age"
4) "27"
5) "sex"
6) "female"

后来在官方文档中发现:

As per Redis 4.0.0, HMSET is considered deprecated. Please use HSET in new code.
根据Redis 4.0.0,HMSET被视为已弃用。请在新代码中使用HSET。

在这之前HSET只能设置单个键值对,同时设置多个时必须使用HMSET。而现在HSET也允许接受多个键值对作参数了。

<think>好的,我现在要回答用户关于Redis存储相关指令的问题。首先,我需要确认用户的需求。他们提到想了解存储命令列表及用法,可能指的是与数据存储管理相关的命令,比如键的过期、持久化、数据操作等。不过根据提供的引用内容,引用中主要涉及数据类型操作,比如字符串、列表、集合等,还有配置相关的信息。因此,可能需要先明确“存储命令”的范围。 首先,根据引用[1]、[2]、[3],Redis的数据类型命令是重点。用户可能想了解如何存储不同数据类型的命令。比如字符串的SET,列表的LPUSH,集合的SADD等。此外,引用[4]提到了Java中的配置,可能涉及连接操作Redis的方法,但用户的问题更偏向于命令本身。 接下来,我需要整理常见的存储相关命令,按数据类型分类。例如: 1. 字符串:SET、GET、DEL等。 2. 列表:LPUSH、RPUSH、LRANGE等。 3. 哈希:HSET、HGET、HMSET等。 4. 集合:SADD、SMEMBERS、SREM等。 5. 有序集合:ZADD、ZRANGE等。 另外,可能还包括键管理命令,如EXPIRE设置过期时间,PERSIST移除过期时间,以及数据持久化命令如SAVE、BGSAVE。但根据引用内容,持久化命令可能不在提供的引用里,所以是否需要包括要看引用是否有相关部分。不过提供的引用中没有提到SAVE或BGSAVE,所以可能只专注于数据操作命令。 需要检查每个引用中的内容: 引用[1]提到字符串、列表、集合、有序集合、哈希的操作命令。引用[2]详细说明列表命令,引用[3]包含StringSet的基本命令,引用[4]是Java配置示例。因此,重点应放在数据类型的基本命令上,可能还需要包括键的通用命令如DEL、EXISTS、EXPIRE等。 接下来,组织回答的结构。首先概述Redis的存储机制,然后分数据类型列出常用命令及示例,最后可能涉及键管理持久化命令(如果适用)。不过根据用户问题,可能更关注如何存储数据,因此各数据类型的存储命令是关键。 需要确保每个命令的语法正确,并给出简单示例,如引用中的示例代码块。例如,SET key value,然后GET key。同时,需要符合用户要求的格式,行内公式用$...$,独立公式用$$...$$,但这里可能较少涉及数学公式,更多是命令示例。 另外,用户要求生成相关问题,所以最后需要添加相关问题部分,比如关于不同数据类型的命令使用,如何设置过期时间等。 现在开始整理各部分内容: 1. 字符串命令:SET、GET、DEL、EXPIRE等。 2. 列表命令:LPUSH、RPUSH、LRANGE等。 3. 哈希命令:HSET、HGETALL等。 4. 集合命令:SADD、SMEMBERS等。 5. 有序集合命令:ZADD、ZRANGE等。 6. 键管理命令:EXISTS、DEL、EXPIRE、TTL等。 每个部分给出命令语法示例,如: 字符串示例: SET username "john_doe" GET username 列表示例: LPUSH mylist "item1" LRANGE mylist 0 -1 同时需要引用对应的引用来源,比如引用[1]提到字符串命令,引用[2]列表命令,引用[3]包含SetString的基本命令。 可能还需要注意,引用[4]是Java配置,但用户可能不需要代码示例,除非他们问及如何在Java中使用这些命令,但用户的问题是关于命令列表,所以可能不需要Java部分,但可以提到在Java中如何调用,如果有相关引用的话。根据引用[4],里面有Redis在Java中的配置方法,可能可以提到如使用RedisTemplate操作,但用户的问题可能更偏向于原生命令,所以这部分可能放在相关问题里作为扩展。 现在开始撰写回答,确保结构清晰,分数据类型介绍,每个命令给出用法示例,并正确引用来源。最后生成相关问题。</think>### Redis存储相关命令及用法 Redis通过丰富的命令集支持多种数据类型的存储操作。以下是常用存储命令分类说明: --- #### 一、字符串(String)命令 1. **`SET key value`**:存储字符串值 示例: ```bash SET username "john_doe" # 存储键为username的值[^1] ``` 2. **`GET key`**:获取字符串值 示例: ```bash GET username # 返回"john_doe" ``` 3. **`DEL key`**:删除键值对 示例: ```bash DEL username # 删除username键 ``` --- #### 二、列表(List)命令 1. **`LPUSH key element`**:从左侧插入元素 示例: ```bash LPUSH mylist "item1" # 列表变为["item1"][^2] ``` 2. **`RPUSH key element`**:从右侧插入元素 示例: ```bash RPUSH mylist "item2" # 列表变为["item1", "item2"] ``` 3. **`LRANGE key start end`**:获取列表范围 示例: ```bash LRANGE mylist 0 -1 # 返回全部元素 ``` --- #### 三、哈希(Hash)命令 1. **`HSET key field value`**:存储哈希字段值 示例: ```bash HSET user:1 name "Alice" # 存储用户1的name字段[^1] ``` 2. **`HGETALL key`**:获取全部哈希字段 示例: ```bash HGETALL user:1 # 返回{"name": "Alice"} ``` --- #### 四、集合(Set)命令 1. **`SADD key member`**:添加集合成员 示例: ```bash SADD tags "redis" # 添加标签"redis"[^3] ``` 2. **`SMEMBERS key`**:获取集合所有成员 示例: ```bash SMEMBERS tags # 返回["redis"] ``` --- #### 五、有序集合(Zset)命令 1. **`ZADD key score member`**:按分数添加成员 示例: ```bash ZADD rankings 100 "PlayerA" # 存储玩家A的分数 ``` 2. **`ZRANGE key start end`**:按分数范围获取成员 示例: ```bash ZRANGE rankings 0 -1 # 返回所有成员 ``` --- #### 六、键管理命令 1. **`EXPIRE key seconds`**:设置键的过期时间 示例: ```bash EXPIRE session:123 3600 # 1小时后过期 ``` 2. **`EXISTS key`**:检查键是否存在 示例: ```bash EXISTS username # 返回1(存在)或0(不存在) ``` --- ### 在Java中使用示例(基于引用[^4]) ```java // 配置RedisTemplate后操作字符串 redisTemplate.opsForValue().set("username", "john_doe"); String value = redisTemplate.opsForValue().get("username"); ``` ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值