redis每秒只有100次存取怎么辦?
redis只有100的ops確實(shí)是有問題的,這違背了redis高性能的定義。可以從以下幾個方面排查下:
1.部署redis的服務(wù)器資源是否充足,包括CPU、內(nèi)存等,redis的數(shù)據(jù)是保存再內(nèi)存中的,充足的內(nèi)存是必要條件,redis是單線程架構(gòu),所以很容易把單核cpu跑滿;
2.客戶端和redis服務(wù)器端的網(wǎng)絡(luò)帶寬是否充足,redis的高性能指的是他自身的處理速度極快,但是如果網(wǎng)絡(luò)延遲比較大,也會導(dǎo)致ops較低;
3.是否有bigkey,大的鍵值對會占用比較大的內(nèi)存,在操作時也會耗費(fèi)更多的計算資源和網(wǎng)絡(luò)資源,這可以使用redis-cli --bigkeys命令查詢出來,如果存在需要根據(jù)業(yè)務(wù)條件做鍵值的拆分;
4.是否采用了錯誤的value類型,redis一般包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set有序集合)和hash(哈希類型),需要結(jié)合實(shí)際業(yè)務(wù)選擇value類型;
5.是否多度使用了高算法復(fù)雜度的命令,比如hgetall、smembers、keys等,可以替換成hmget、sscan、scan等;
6.查詢redis的慢查詢?nèi)罩荆钍莝lowlog get,可以定位到具體的慢操作,針對性的做優(yōu)化;
7.redis如果打開了持久化功能,rdb和aof都有可能導(dǎo)致性能問題,可以通過info persistence查看持久過相關(guān)的統(tǒng)計數(shù)據(jù)是否有異常,比如fork是否會過慢,aof_delayed_fsync是否過大等。
以上只是個人建議,有不對的地方煩請補(bǔ)充和指正,謝謝!