其實redis是不會存在併發問題的,因為他是單程序的,再多的命令都是一個接一個地執行的。我們使用的時候,可能會出現併發問題,比如獲得和設定這一對。Redis的為什麼 有高併發問題?Redis的的出身決定
Redis是一種單執行緒機制的nosql資料庫,基於key-value,資料可持久化落盤。由於單執行緒所以redis本身並沒有鎖的概念,多個客戶端連線並不存在競爭關係,但是利用jedis等客戶端對redis進行併發訪問時會出現問題。發生連線超時、資料轉換錯誤、阻塞、客戶端關閉連線等問題,這些問題均是由於客戶端連線混亂造成。
同時,單執行緒的天性決定,高併發對同一個鍵的操作會排隊處理,如果併發量很大,可能造成後來的請求超時。
在遠端訪問redis的時候,因為網路等原因造成高併發訪問延遲返回的問題。
解決辦法
在客戶端將連線進行池化,同時對客戶端讀寫Redis操作採用內部鎖synchronized。
伺服器角度,利用setnx變向實現鎖機制。
更多:http://www.shanhubei.com/archives/55167.html