###### tags: `note` # redis筆記 ## 資料的生命週期 Redis把資料儲存在memory內 當系統意外停機時,資料將遺失 Redis有內建的備份機制 Ref: https://redis.io/topics/persistence 中文說明: https://tachingchen.com/tw/blog/redis-data-persistence/ 分為RDB及AOF兩種 RDB預設備份情境: 1. 900秒內1次寫入 2. 300秒內10次寫入 3. 30秒內10000次寫入 4. 安全停機(在Docker內為docker stop) 可在redis-cli使用set bgsave "" 或直接修改redis.conf設定檔 ## Singleton module 每次呼叫GetDatabase()時不會創建新的實體 ## 條件插入 原生指令: SET key value [EX seconds|PX milliseconds|KEEPTTL] [NX|XX] * NX -- Only set the key if it does not already exist. * XX -- Only set the key if it already exist. C# Client(StackExchange.Redis): ``` bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always, CommandFlags flags = CommandFlags.None); public enum When { Always = 0, Exists = 1, NotExists = 2 } ``` 設定When.NotExists避免發生value覆寫