debug redis過期時間

2021-09-25 05:10:13 字數 911 閱讀 8361

接手的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 ...