Redis 事務實現需要用到 MULTI 和 EXEC 兩個命令,事務開始先發送MULTI命令,然后執行事務中處理的命令,最后發送EXEC命令表示事務結束。
Redis 事務不支持回滾操作
與事務相關的命令還有WATCH 和 UNWATCH,如果WATCH了某個鍵,那么再執行事務如果修改該鍵,那么后面的事務會被取消。UNWATCH 可以在 WATCH之后MULTI之前取消掉某個鍵的監控。
分布式鎖:
保證分布式系統之間同步訪問一個共享資源,需要通過互斥的方式來保證一致性。
創建鎖:
Redis主要使用SETNX命令(set if not exists)。
語法:SETNX key value
功能:當且僅當key不存在,將key的值設置為value,並返回1;如果key已經存在,則不做任何操作,並返回0. 有點類似java的CAS操作。
需要設置過期時間,防止加鎖的客戶端掛掉或超時。
釋放鎖:
使用WATCH命令,在執行完業務后比較key的值,如果沒有改變則del這個值。