使用Map集合實現redis的快取功能

2021-09-27 11:53:14 字數 1969 閱讀 6148

redis資料庫因為資料都是儲存在記憶體中的所以讀取速度比資料庫讀取要快很多。最近沒事模擬使用快取的思想實現了乙個簡單的登入案例。實現的方式就是第一次讀取資料庫的時候使用靜態初始化的方式將所有的使用者名稱密碼存放在乙個map集合中,然後下次登入直接從map中查詢響應的使用者資訊進行登入。

可以看一下簡單的實現方法。**比較長,大家可以大致看一下,主要就是靜態**塊的方式將資料庫讀取到的資料儲存到map集合中的過程。

前端**

servelt層**

system.out.println("redis登入耗時" + (end - start) + "ms");

}讀取資料庫資料進行快取的**

public class testnosql 

} catch (exception e)

}// 從快取中查詢將結果返回

// 這邊有乙個問題就是如果伺服器開始期間修改了資料庫(增刪改)而map是不會動態更新的,完全符合快取的原理

public static boolean login(string username, string password)

return false;}}

下面作為對比把普通sql查詢進行登入的**也貼出來,熟悉的可以直接跳過了

system.out.println("sql登入耗時" + (end - start) + "ms");

}sql登入驗證的**

public class testsql catch (exception e)

while (rs.next())

}return false;

}

最後可以看一下多次測試的結果,資料庫中是插入了18200條資料的,登入使用的最後一條資料。

從上面的結果可以看出使用快取的思想的登入效率是明顯要高於普通的資料路查詢登入的,快取的乙個不好的地方就是無法做到實時更新操作,比如說上面的我在中間把資料庫中的資料進行更改操作sql登入是無法登入成功的,但是使用快取依舊可以登入成功。所以使用快取的通常都是放一些資料不經常發生變化,實時性要求不高的資料。

後面對sql登入的內容作了一些優化,把載入驅動和獲取連線放到靜態**塊中進行,結果比上面稍微快了一些,大約30ms左右,這裡就不把**和結果放出來了,可以看出在程式中必要的地方使用靜態**塊的方式還是有助於提高程式執行的效率的。

這邊對個人認為的快取思想做了一些驗證,當然真正的redis肯定不止這麼簡單地,以後的工作中也希望大家可以更好的理解利用redis。

JS實現Map集合

function map this.put function key,value this.arr this.arr.length new struct key,value this.get function key return null this.values function return v...

Properties作為Map集合的使用

1.properties介紹 properties的基本使用 示例 public class propertiesdemo01 2.properties作為map集合的特有方法 object setproperty string key,string value 設定集合的鍵和值,都是string型...

Set集合和Map集合的使用方法

set是乙個無序的 不重複的集合 它主要的特點就是不重複 主要用來去重 我們使用set集合的時候 需要new 也就是說他是乙個物件 1.使用 使用的時候 必須先進行例項化 可以傳遞乙個引數 引數是可選 如果傳遞引數 引數是陣列 返回的結果是set集合 去重之後的陣列 set集合 let arr 11...