Redis中set、setnx、setex的使用区别及说明
更新时间:2025年11月05日 14:14:49 作者:梦想不会灭
本文介绍了Redis中的SET、SETEX、SETNX和GETSET命令,分别用于设置键值对、设置带过期时间的键值对、仅当键不存在时设置键值对以及获取并设置键值对,同时,还提到了expire和persist命令用于设置和清除键的过期时间
1、SET
SET key value
含义:
- 将字符串值 value 关联到 key 。
- 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。
2、SETEX
SETEX key seconds value
含义:
- 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
- 如果 key 已经存在, SETEX 命令将覆写旧值。
返回值:
- 设置成功时返回 OK 。
- 当 seconds 参数不合法时,返回一个错误。
3、SETNX
SETNX key value
含义:
- 将 key 的值设为 value ,当且仅当 key 不存在。
- 若给定的 key 已经存在,则 SETNX 不做任何动作。
- SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
返回值:
- 设置成功,返回 1 。
- 设置失败,返回 0 。
4、GETSET
GETSET key value
含义:
- 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
- 当 key 存在但不是字符串类型时,返回一个错误。
返回值:
- 返回给定 key 的旧值。
- 当 key 没有旧值时,也即是, key 不存在时,返回 null 。
备注:
1、expire命令可以设置超时,让现有的key获得超时时间
Expire KEY_NAME TIME_IN_SECONDS
2、persist命令可以清除超时,让key变成一个永久的key
PERSIST KEY_NAME
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Redis报错UnrecognizedPropertyException: Unrecognized 
在使用SpringBoot访问Redis时,报错提示识别不了属性headPart,经过排查,发现并非Serializable或getset方法问题,而是存在一个方法getHeadPart,但无headPart属性,解决方案是将getHeadPart改为makeHeadPart2024-10-10
关于SpringBoot 使用 Redis 分布式锁解决并发问题
针对上面问题,一般的解决方案是使用分布式锁来解决,本文通过场景分析给大家介绍关于SpringBoot 使用 Redis 分布式锁解决并发问题,感兴趣的朋友一起看看吧2021-11-11
SpringBoot整合Redis实现序列化存储Java对象的操作方法
这篇文章主要介绍了SpringBoot整合Redis实现序列化存储Java对象,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-03-03
redis启动报错Can‘t open the log file: No such file or d
这篇文章主要介绍了redis启动报错Can‘t open the log file: No such file or directory问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-11-11


最新评论