【Redis源碼】setnx、setex、psetex命令
簡(jiǎn)介
在讀本文之前,建議閱讀文章:Redis Set命令詳解.
在了解了set的原理之后,setnx、setex、psetex命令的原理我們也應該大致了解了,這3個(gè)命令也是先調用了tryObjectEncoding將值優(yōu)化,再調用setGenericCommand將key-value設置到數據庫,只不過(guò)這3個(gè)命令不需要解析額外參數。
setnx命令
格式:
setnx key value
- 說(shuō)明: 將key-value設置到數據庫,當且僅當key不存在時(shí)。
- 源碼分析: 在調用setGenericCommand時(shí),將flags賦值為OBJ_SET_NX,表示只有key不存在時(shí)才可以執行函數。
setex命令
格式:
setex key seconds value
- 說(shuō)明: 將key-value設置到數據庫,并且指定key的超時(shí)秒數。
- 源碼分析: 在調用setGenericCommand時(shí),將flags賦值為OBJ_SET_NO_FLAGS,expire賦值為UNIT_SECONDS,表示不需要考慮數據庫中是否存在key,且時(shí)間單位為秒。
psetex命令
格式:
psetex key milliseconds value
- 說(shuō)明: 將key-value設置到數據庫,并且指定key的超時(shí)毫秒數。
- 源碼分析: 在調用setGenericCommand時(shí),將flags賦值為OBJ_SET_NO_FLAGS,expire賦值為
UNIT_MILLISECONDS
,表示不需要考慮數據庫中是否存在key,且時(shí)間單位為毫秒。

0 評論