redis使用過程中遇到的問題及解決方法

2021-07-24 19:56:37 字數 1654 閱讀 9452

最近專案裡想用redis提公升查詢效率,我是其中幾個模組的開發人員,在使用redis的過程中遇到了很多的問題。摸著石頭過河,受到很多打擊,但也學會了很多,記錄下來,供自己備忘也方便別人。

1、查詢key值查不到,然而用視覺化工具查是有值的

仔細看了下工程中的配置檔案,快取值是a工程中放的,在b中取。a中database引數設定了0,b中database設定了1,節點不一樣導致取不到值。

class="org.springframework.data.redis.connection.jedis.jedisconnectionfactory">

name="poolconfig"

ref="jedispoolconfig"/>

name="hostname" value="$"/>

name="port" value="$"/>

name="password" value="$"/>

name="database" value="$"/>

redis.db
.index=1redis是乙個字典結構的儲存伺服器,乙個redis例項提供了多個用來儲存資料的字典,客戶端可以指定將資料儲存在哪個字典中。每個資料庫對外都是以乙個從0開始的遞增數字命名,redis預設支援16個資料庫,可以通過配置引數databases來修改這一數字。客戶端與redis建立連線後會自動選擇0號資料庫,不過可以隨時使用select命令更換資料庫,如要選擇1號資料庫:

redis>select1ok
redis [1]>get foo

(nil)2、key值過長

由於專案裡面的redis是單機的,對空間的使用很關注,key值不宜過長。當資料量很大時,key值也是不小的開銷。

舉個例子:在乙個32位的redis伺服器上,如果儲存一百萬個鍵,每個值的長度是32-character,那麼在使用6-character長度鍵名時,將會消耗大約96mb的空間,但是如果使用12-character長度的鍵名時,空間消耗則會提公升至111mb左右。隨著鍵的增多,15%的額外開銷將產生重大的影響。

3、不使用keys指令

由於redis是單執行緒的,用keys指令對系統是不小的負擔,當資料量大時,會阻塞系統數秒之久。redis 2.8.0提供了scan sscan hscan zscan等命令用於查詢key,具體用法參考

需要注意的是當 scan 命令的游標引數被設定為 0 時, 伺服器將開始一次新的迭代, 而當伺服器向使用者返回值為 0 的游標時, 表示迭代已結束。

和 keys 命令一樣, 增量式迭代命令也可以通過提供乙個 glob 風格的模式引數, 讓命令只返回和給定模式相匹配的元素, 這一點可以通過在執行增量式迭代命令時, 通過給定 match 引數來實現。

4、lrange指令查全部

lrange key start stop

stop可以為負數,以 -1 表示列表的最後乙個元素, -2 表示列表的倒數第二個元素,以此類推。

lrange keyname 0 -1查全部

VSCode使用過程中遇到的問題

vscode編譯後除錯,除錯失敗,提示如下 然後發現我的cpp檔案是單獨放在乙個資料夾下的 如果遇到如prelaunchtask g exe build active file 後存在錯誤的提示,直接將lauch.json中的 prelaunchtask g exe build active fil...

wampserver使用過程中遇到的問題及相關配置

wampserver集合了apache php mysql 起因 1 電腦之前安裝了iis,占用了80埠,而apache預設也是使用80埠的,所以服務啟動不了。所以需要修改一下 apache使用的埠。左鍵點選這個 然後修改其他想使用的埠 比如 8080 2 通過wampserver提供的頁面進行管理...

Spring data Jpa使用過程中遇到的坑

一定要注意如果我們在實體類中沒有配置資料表的預設值,那麼在存入和取出的時候應該設定。否則在取出的時候就會出現問題。如何通過一方獲取到多方實體 jsp中 jsp資料夾與上面servlet對映名最好不要一致,這樣會出問題 注意!乙個實體類的表id名字請設定為id,保證不出錯。問題分析 解決方法 其實一般...