使用redis遇到的問題

2021-10-02 21:48:59 字數 1358 閱讀 7675

最近,在做乙個**專案的過程中使用了redis,也碰到了一些問題,記錄下。

1.使用redis的過程中丟擲了could not get a resource from the pool的異常。

此時我修改了redis.conf的內容,變為以下

daemonize no

protected-mode no

#bind 127.0.0.1

但是發現不起作用,原來是redis啟動的時候如果不指定配置檔案,則還會按照預設的啟動方式,此時只需要啟動的時候附帶上redis.conf就可以了。

./redis-server redis.conf
2、redis用在專案的時候要考慮以下問題:

2.1、快取雪崩

所有的快取資料在同一時間過期,導致所有資料都訪問資料庫,使得資料庫崩潰,系統崩潰。

解決:給所有的快取設定乙個隨機的過期時間。

2.2、快取穿透

攻擊者請求的資料是資料庫和redis中都沒有的資料,使得每次都訪問資料庫,已達到攻擊效果。

解決:null或者空字串值設定給redis。

2.3、快取擊穿

某乙個熱度高的商品在某乙個時間快取過期了,導致都訪問資料庫。

解決:使用分布式鎖,一次都只能有乙個請求訪問資料庫。

以下是**,以及一些詳細過程。

public pmsskuinfo getskubyid

(string skuid,string ip)

else

else

null或者空字串值設定給redis

// 在訪問mysql後,將mysql的分布鎖釋放

system.out.

println

("ip為"

+ip+

"的同學:"

+thread.

currentthread()

.getname()

+"使用完畢,將鎖歸還:"

+"sku:"

+ skuid +

":lock");

string locktoken = jedis.

get(

"sku:"

+ skuid +

":lock");

if(stringutils.

isnotblank

(locktoken)

&&locktoken.

equals

(token))}

else

} jedis.

close()

;return pmsskuinfo;

}

redis使用遇到的問題總結

1 純記憶體操作 2 單執行緒操作,避免了頻繁的上下文切換 3 採用了非阻塞i o 多路復用機制 1 快取和資料庫雙寫一致性問題 2 快取雪崩問題 3 快取擊穿問題 4 快取併發競爭問題 前提是對資料有強一致性要求,不能放快取 只能降低不一致發生的概率,無法完全避免 只能保證最終一致性。1 採用正確...

Redis 的 fields 遇到的問題

問題描述 本地和測試環境同使用一台redis伺服器,本地環境和測試環境使用 key,fileds,value 中的fileds 來區分,例如 keyfields value 004920c6eba10c88bebc11f6428bedaa9d040993 local session 004920c6...

使用遇到的問題 Mac Pro使用遇到問題

mac os x無法休眠?教你用pmset找出原因。如何重置 mac 上的系統管理控制器 smc mac retina 合蓋後開啟突然黑屏,長按開機鍵無反應?應該是有一次修改了系統設定,解決如下 mac os x中顯示 不顯示隱藏檔案方法 命令列 mac不能複製拷貝寫入檔案到行動硬碟,u盤怎麼辦 n...