Redis中setnx的使用

概念

setnx是「SET if Not eXists」的缩写,只有不存在的时候才设置,可以利用它来实现锁的效果。
SETNX key value
若给定的 key 已经存在,则 SETNX 不做任何动作。

SET命令

SET命令可用选项的基本语法
SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]

EX

到期时间(以秒为单位)

PX

到期时间(以毫秒为单位)

NX

仅在键不存在时设置键

XX

只有在键已存在时才设置

示例

SET mykey “redis” EX 60 NX
在键“mykey”不存在时,设置键的值为“redis”,到期时间为60秒。

使用redisTemplate操作SetNx

    @Override
    public boolean setNx(String key,String value, long time) {
        try {
            RedisCallback<String> callback = (connection) -> {
                JedisCommands commands = (JedisCommands) connection.getNativeConnection();
                return commands.set(key, value, "NX", "PX", time);
            };
            String result = redisTemplate.execute(callback);

            return !StringUtils.isEmpty(result);
        } catch (Exception e) {
            logger.error("set redis occured an exception", e);
        }
        return false;
    }

参考:
https://blog.csdn.net/u010520146/article/details/84847684?utm_medium=distribute.pc_relevant.none-task-blog-2

posted @   zjcfrancis  阅读(3225)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
历史上的今天:
2020-01-13 654. 最大二叉树
2020-01-13 100. 相同的树
2020-01-13 387. 字符串中的第一个唯一字符
点击右上角即可分享
微信分享提示