2020年Java面試題講解之關于Redis有關知識的15個

      網友投稿 791 2025-03-31

      --Redis是什么?都有那些使用場景?

      Redis是一個使用C語言開發的高速緩存數據庫。

      Redis使用場景:

      記錄帖子數、點擊數、評論數;

      緩存近期熱貼

      緩存文章詳情信息

      記錄用戶會話信息

      --Redis有哪些功能?

      數據緩存功能

      分布式鎖的功能

      支持數據持久化

      支持事務

      支持消息隊列

      --Redis和memcache有什么區別?

      存儲方式不同:memcache把數據全部存在內存之中,斷電后會掛掉,數據不能超過內存大小;Redis有部分存在硬盤上,這樣能保證數據的持久性。

      數據支持類型:memcache對數據類型支持相對簡單;Redis有復雜的數據類型。

      使用底層模型不同:它們之間底層實現方式,以及與客戶端之間通訊的應用協議不一樣,Redis自己構建了vm機制,因為一般的系統調用系統函數的話,會浪費一定的時間去移動和請求。

      value值的大小同:Redis最大可以達到1GB;memcache只有1MB

      --Redis為什么是單線程的?

      因為CPU不是Redis的瓶頸,Redis的瓶頸最有可能是機器內存或者網絡帶寬。既然單線程容易實現,而且CPU又不會成為瓶頸,那就順理成章地采用單線程的方案了。

      關于Redis的性能,官方網站也有,普通筆記本輕松處理每秒幾十萬的請求。而且單線程并不代表就慢。

      Nginx和nodejs也都是也都是高性能單線程的代表。

      --什么是緩存穿透?怎么解決?

      緩存穿透:指查詢一個一定不存在的數據,由于緩存是不命中時需要從數據庫查詢,查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到數據庫去查詢,造成緩存穿透。

      解決方案:最簡單粗暴的方法如果一個查詢返回的數據為空(不管是數據不存在,還是系統故障),我們就把這個空結果進行緩存,但它的過期時間會很短,最長不超過五分鐘。

      --Redis支持的數據類型有哪些?

      String(字符串)、List(列表)、hash(字典)、set(集合)、zset(有序集合)

      --Redis支持的Java客戶端有哪些?

      Redisson、jedis、lettuce等

      --jedis 和Redisson有哪些區別?

      jedis:提供了比較全面的Redis命令的支持。

      Redisson:實現了分布式個可擴展的Java數據類型,與jedis相比Redisson的功能相對簡單,不支持排序、事務、管道、分區等Redis特性。

      --怎么保證緩存和數據庫數據的一致性?

      合理設置緩存的過期時間

      新增、更改、刪除數據庫操作同時更新Redis,可以使用事務機制來保證數據的一致性。

      --Redis持久化有幾種方式?

      PDB(Redis Database):指定的時間間隔能對你的數據進行快照存儲。

      AOF(Append Ony File): 每一個收到的寫命令都通過write函數追加到文件中。

      --Redis怎么實現分布式?

      Redis分布式鎖其實就是在系統里面占一個“坑”,其他程序也要占“坑”的時候,占用成功了就可以繼續執行,失敗了就只能放棄或者稍后重試。

      占坑一般使用setnx(set if not exists)指令,只允許被一個程序占有,使用完調用del釋放鎖。

      --Redis分布式鎖有什么缺陷?

      Redis分布式鎖不能解決超時問題,分布式鎖有一個超時時間,程序的執行如果超出了鎖的超時時間就會出現問題。

      --Redis如何做內存優化?

      盡量使用Redis的散列表,把相關的信息放到散列表里面存儲,而不是把每個字段單獨存儲,這樣可以有效的減少內存使用。比如將web系統的用戶對象,應該放到散列表里面再整體存儲到Redis。而不是把用戶的姓名、年齡、密碼、郵箱等字段分別設置key進行存儲。

      --Redis淘汰策略有哪些?

      volatile-lru:從已設置過期時間的數據集(server.db[i].exists)中挑選最近最少使用的數據淘汰。

      2020年Java面試題講解之關于Redis有關知識的15個

      volatile-ttl:從已設置過期時間的數據集(server.db[i].exists)中挑選將要過期的數據淘汰。

      volatile-random:從已設置過期時間的數據集(server.db.exists)中任意選擇數據淘汰。

      allkeys-lru:從數據集(server.db[i].dict)中挑選最近最少使用的數據淘汰。

      allkeys-random:從數據集(server.db[i].dict)中任意選擇數據淘汰。

      no-enviction(驅逐):禁止驅逐數據。

      --Redis常見的性能問題有哪些?如何解決?

      服務器寫內存快照,會阻塞主線程的工作,當快照比較大時對性能影響是非常大的,會間斷性暫停服務,所以主服務器最好不要寫內存快照。

      Redis主從復制的性能問題。為了主從復制的速度和連接的穩定性,主從庫最好在同一個局域網內。

      Java Redis

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel計算表格求增長率的教程(excel表格如何算增長率)
      下一篇:如何在Excel中返回到以前的保存版本?
      相關文章
      在线观看亚洲AV每日更新无码| 亚洲依依成人亚洲社区| 国产亚洲精品第一综合| 日本亚洲免费无线码| 亚洲午夜国产精品| 亚洲精品中文字幕麻豆| 亚洲视频手机在线| 久久亚洲免费视频| 精品国产_亚洲人成在线高清 | 亚洲视频一区网站| 亚洲成人午夜在线| 91天堂素人精品系列全集亚洲| 亚洲视频2020| 亚洲日本国产精华液| 亚洲乱码无限2021芒果| 亚洲a级在线观看| 色婷五月综激情亚洲综合| 亚洲性色精品一区二区在线| 亚洲精品456人成在线| 亚洲人成网站在线在线观看| 亚洲码欧美码一区二区三区| 亚洲av无码一区二区三区四区| 亚洲日韩AV一区二区三区中文 | 国产精品亚洲精品青青青| 亚洲综合一区二区三区四区五区| 国产成人精品亚洲日本在线| 亚洲永久网址在线观看| 狠狠入ady亚洲精品| 亚洲人成影院在线无码观看| 亚洲线精品一区二区三区影音先锋 | 亚洲码和欧洲码一码二码三码| 亚洲一卡2卡三卡4卡无卡下载 | 国产亚洲精品a在线观看| 亚洲日韩欧洲无码av夜夜摸| 亚洲无线码在线一区观看| 亚洲大片在线观看| 亚洲日韩中文字幕天堂不卡| 亚洲综合激情五月色一区| 亚洲av午夜国产精品无码中文字| 亚洲av无码片vr一区二区三区| 亚洲AV无码资源在线观看|