redis學習總結(1)

redis 是什麼

1.1redis定義:

Redis :Redis (REmote DIctionary Server) 是用 C 語言開發的一個開源的高性能鍵值對(
key-value)數據庫 Redis 與其他 key - value 緩存產品有以下三個特點:

1)Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啓的時候可以再次加載進行使用。
  2)Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  3)Redis支持數據的備份,即master-slave模式的數據備份

1.2redis與mysql等區別

1)類型上

從類型上來說,mysql是關係型數據庫,redis是緩存數據庫

(2)作用上

mysql用於持久化的存儲數據到硬盤,功能強大,但是速度較慢

redis用於存儲使用較爲頻繁的數據到緩存中,讀取速度快

(3)需求上

mysql和redis因爲需求的不同,一般都是配合使用。

1.3redis的優點

  • 1性能極高-redis能支持超過10w次每秒的讀寫頻率
  • 豐富的數據類型:String ,Lists,hashes,sets及orderd sets
  • 原子性 - redis的所有的操作都是原子性的,同時redis還支持對幾個操作後的原子性執行
  • 豐富特性-- 支持發佈訂閱模式 ,通知,key過期等特性
  • 單線程操作

redis內部結構是什麼

參考 https://www.cnblogs.com/gaopengfirst/p/10062980.html

redis怎麼使用

4.1redis的使用場景
String 類型:

  • 秒殺 – 原子性來計數 100個商品,通過incr 或者decr 進行遞增或遞減操作,判斷庫存
  • 用戶信息共享—
  • 對帖子總數實時統計----
  • 對tomcat集羣 ,通過redis來實現session共享問題–
  • p2發送短信,把短信放入session裏面 過期問題— 將用戶的ip,存入redis中,給設置一個過期時間,判斷key是否失效,可以重新發送短信驗證碼

4.2redis使用的集羣模式,以及不同版本下的集羣模式選擇
參考https://blog.csdn.net/miss1181248983/article/details/90056960
參考 https://www.cnblogs.com/diegodu/p/9183356.html
4.3redis 的持久化機制選擇
rdp:每60秒寫入1000key到redis,發起快照,持久化到磁盤

aof: 每秒鐘往aof文件寫入命令;
每次操作都往aof文件中寫入命令;
系統自檢判斷什麼時候寫入命令
怎麼選擇持久化機制,及優缺點

4.4 redis 單線程怎麼保證高性能
1.內存操作快
2.單線程操作,避免了頻繁的上下文切換
3.採用了非阻塞I/O多路複用機制
4.5redis怎麼保證與數據庫的一致性
如果對數據有強一致性要求,不能放緩存
將不一致分爲三種情況:

  1. 數據庫有數據,緩存沒有數據;

  2. 數據庫有數據,緩存也有數據,數據不相等;

  3. 數據庫沒有數據,緩存有數據。

解決方法:

  1. 對刪除緩存進行重試,數據的一致性要求越高,需要刪除緩存時間越短。

  2. 定期全量更新,簡單地說,就是我定期把緩存全部清掉,然後再全量加載。

  3. 給所有的緩存一個失效期,這個長短根據業務來,不然與數據庫交互太頻繁。

4.6、Redis的數據類型及使用場景

String:一般做一些複雜的計數功能的緩存;

Hash:單點登錄;

List:做簡單的消息隊列的功能;

Set:做全局去重的功能;

SortedSet:做排行榜應用,取TOPN操作;延時任務;做範圍查找。

以後繼續補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章