1. 程式人生 > 實用技巧 >Java生成PKCS12證書

Java生成PKCS12證書

1.redis是什麼

  redis屬於資料庫,是key-value型的非關係型資料庫,與mysql相比,redis的資料是直接存在記憶體的而mysql的資料是存在硬碟的,

所以redis的讀寫速度非常快,被經常用於快取,另外,redis也可以實現分散式鎖、它提供了多種資料型別來支援不同的業務場景,
除此之外,redis還支援事務、持久化、LRU驅動時間、LUA指令碼等;

2.redis為什麼比mysql快

1.Redis是基於記憶體儲存的,MySQL是基於磁碟儲存的
2.Redis儲存的是k-v格式的資料。時間複雜度是O(1),常數階,而MySQL引擎的底層實現是B+Tree,時間複雜度是O(logn),對數階。Redis會比MySQL快一點點。

3.MySQL資料儲存是儲存在表中,查詢資料時要先對錶進行全域性掃描或者根據索引查詢,這涉及到磁碟的查詢,
磁碟查詢如果是按條點查詢可能會快點,但是順序查詢就比較慢;而Redis不用這麼麻煩,本身就是儲存在記憶體中,會根據資料在記憶體的位置直接取出。
4.Redis是單執行緒的多路複用IO,單執行緒避免了執行緒切換的開銷,而多路複用IO避免了IO等待的開銷,
在多核處理器下提高處理器的使用效率可以對資料進行分割槽,然後每個處理器處理不同的資料。

3.為什麼用redis快取而不用map、guaua

快取分為本地快取和分散式快取,map和guaua實現的是本地快取,特點是輕量、快速,生命週期隨著JVM的銷燬而結束,但是每個例項都各自儲存一份快取,快取不具有一致性

redis實現的是分散式快取,特點是所有例項公用一套快取,實現了資料的一致性,缺點是需要保持redis 的高可用,整個架構就比較複雜

4.redis支援的資料型別

①.String
②.List
③.Hash:Hash是String型別的field和value的對映表,具體參考
④.Set
⑤.Zset

5.redis持久化

持久化有兩種方式:
RDB(快照持久化):redis可以通過建立快照的方式來獲得儲存在記憶體裡面的資料在某個時間點的副本,建立快照之後,可以對快照進行備份
可以將快照複製到其他伺服器來建立擁有相同資料的伺服器副本,還可以將快照留在原處,以便重啟伺服器使用;
AOF持久化:與快照持久化相比,AOF持久化的實時性更好,因此已成為主流的持久化方案。預設情況下Redis沒有開啟AOF (append only file)方式的持久化,可以通過appendonly引數開啟;

6.redis事務

redis通過MULTI、EXEC、WATCH等命令來實現事務功能,事務提供了一種將多個命令請求打包,然後一次性,按順序的執行多個命令的機制,並且在事務執行期間,是不能中斷的,
一直到事務執行完成後伺服器才會處理其他的請求;
在傳統的關係式資料庫中,常常用 ACID性質來檢驗事務功能的可靠性和安全性。在 Redis中,事務總是具有原子性(Atomicity)、一致性(Consistency)和隔離性(Isolation),並且當Redis執行在某種特定的持久化模式下時,事務也具有永續性(Durability) 。

7.快取雪崩和快取穿透

快取雪崩:快取同一時間大量的失效,造成同一時間很多向資料庫傳送請求,從而使資料庫崩掉
解決方法:
·1 儘量保證整個redis叢集的高可用性,發現機器宕機儘快補上。選擇合適的記憶體淘汰策
●2 本地ehcache快取+hystrix限流&降級,避免MySQL崩掉·事後:利用redis持久化機制儲存的資料儘快恢復快取

快取穿透:大量的key根本不在快取中,所以每次都要去查資料庫,若對這個key進行大量的查詢,導致大量請求落到資料庫上,從而造成快取穿透
解決方法:若快取和資料庫都不存在某個key,則給快取中設定一個對應的key,只需將過期時間設定的短一些