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怎麼保證與數據庫的一致性
如果對數據有強一致性要求,不能放緩存
將不一致分爲三種情況:
-
數據庫有數據,緩存沒有數據;
-
數據庫有數據,緩存也有數據,數據不相等;
-
數據庫沒有數據,緩存有數據。
解決方法:
-
對刪除緩存進行重試,數據的一致性要求越高,需要刪除緩存時間越短。
-
定期全量更新,簡單地說,就是我定期把緩存全部清掉,然後再全量加載。
-
給所有的緩存一個失效期,這個長短根據業務來,不然與數據庫交互太頻繁。
4.6、Redis的數據類型及使用場景
String:一般做一些複雜的計數功能的緩存;
Hash:單點登錄;
List:做簡單的消息隊列的功能;
Set:做全局去重的功能;
SortedSet:做排行榜應用,取TOPN操作;延時任務;做範圍查找。
以後繼續補充