redis set nx
set数据结构
-1 永久存在
-2 过期已删除或者是键不存在
redis命令参考
https://redis.io/commands/set/
redis键值的计数
- key先设置值后设置过期时间
clear
flushall
get a
set a 1
get a
ttl a
expire a 10
get a
ttl a
- 使用nx对key进行设置
flushall
get a
ttl a
set a 1 nx ex 10
incr a
get a
ttl a
get a
ttl a
- 若key存在使用setnx设置key的值增加过期时间
flushall
get a
ttl a
set a 10
get a
ttl a
set a 1 nx ex 10
get a
ttl a
setnx中set的值不生效,且设置的过期时间不生效
- 先setnx 再set
flushall
get a
ttl a
set a 1 nx ex 10
get a
ttl a
set a 10
get a
ttl a
get a
ttl a
setnx 中设置的过期时间不生效,后set设置的值生效
incr 自增
- 原始的键值不存在
flushall
get a
ttl a
incr a
get a
ttl a
incr a
get a
ttl a
键若不存在,则键默认值为0,每incr一次+1
- 原始的键值存在,且不为0
flushall
set a 3
get a
ttl a
incr a
get a
ttl a
incr a
get a
ttl a
- 若健存在,且数据类型为字符串
flushall
set a k
get a
ttl a
incr a
get a
ttl a
incr a
get a
ttl a
- m分钟n次计数实现
flushall
set a 1
expire a 10
get a
ttl a
incr a
get a
ttl a
incr a
get a
ttl a
分析:该操作set 和 expire 将分为两个命令对数据库进行操作
flushall
set a 1 nx ex 10
ttl a
incr a
get a
ttl a
incr a
get a
ttl a
分析:该操作将set 和 expire 同时进行执行