接手的c#工程中,用到了redis。
前端展示的資料時有時無。開始懷疑時插入redis中的資料過期引起的。
為啥要查這個呢? 程式中有個bug, 過一會,存到redis中的資料是有效的,但是讀出來,一會就無效了。
開始懷疑是不是資料存的時候,key過期時間短了,結果不是。
因為插入資料時,指定了key的過期時間為1小時。
bool b = false;
b = redisbase.item_set("my_key_" + my_key.id.tostring(), jsondata);
public static bool item_set(string key, t t)
}catch (exception ex)
return false;
}
用win版的redis客戶端查詢, 也可以看到過期時間接近1個小時(這時資料剛插入redis, 馬上查詢)
查詢命令格式 ttl
redis 127.0.0.1:6379> ttl my_key
(integer) 3583
redis 127.0.0.1:6379> ttl my_key
(integer) 3600
redis 127.0.0.1:6379> ttl my_key
(integer) 3599
儲存同乙個key的程式有2個,乙個新版,乙個舊版。
新版和舊版和裝置通訊的協議不同。
新版得到裝置的有效資料,寫入redis資料庫.
舊版得到的裝置無效資料,也寫入了redis資料庫。
舊版資料蓋掉了新版資料. 導致使用資料的前端程式上,導致資料時有時無。
不執行舊版程式,只執行新版程式來存資料。
session過期時間
在一般系統登入後,都會設定乙個當前session失效的時間,以確保在使用者沒有使用系統一定時間後,自動退出登入,銷毀session。具體設定很簡單 在主頁面或者公共頁面中加入 session.setmaxinactiveinterval 900 引數900單位是秒,即在沒有活動15分鐘後,sessi...
redis過期時間
在redis中,可以給乙個鍵設定過期時間,等時間到了以後,該鍵會被自動刪除。這個機制經常被用來儲存驗證碼等有一定時效性的東西,資料的有效期過了以後,就會被自動刪除以節省記憶體空間。跟過期相關的命令有三個,分別是expire persist和ttl,用法如下 來看個簡單的例子 0.1 6379 set...
redis過期時間
如果redis中沒有設定expire過期時間,那麼redis中的資料將會是永久有效的,不會被自動刪除 在不超過最大記憶體的情況下 但是redis無論有沒有設定expire,他都會遵循redis的配置好的刪除機制,在配置檔案裡設定 redis最大記憶體不足 時,資料清除策略,預設為 volatile ...