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 @ 2022-01-13 14:49  zjcfrancis  阅读(3114)  评论(0编辑  收藏  举报