redis

1.redis是什麼?

redis是一個非關係型數據庫,主要是用來解決高併發,高可用產生的大數據存儲問題,它是單線程的操作。

2.redis有哪幾種數據類型,分別是什麼?

有五種類型:string,hash,list,set,zset

3.redis的基本操作?

字符串類型(string)get,set,mget,mset(set a 12)
散列類型(hash)hget,hset,hmset,hmget(hset hashtable a 12)
列表類型(list)push.pop,lrange(push listtable 12)
集合類型(set)(sadd settable 2)
有序集合類型(zset)(zadd zsetTable 12 11)

模糊獲取key:keys *;

4.redis持久化方案:

  ①基於快照的方式,默認;

  ②基於文檔追加的方式,配置:appendonly true;appendfsync everySsec;appendfilename "";

5.主備原理

1、 當從庫和主庫建立MS關係後,會向主數據庫發送SYNC命令;
2、 主庫接收到SYNC命令後會開始在後臺保存快照(RDB持久化過程),並將期間接收到的寫命令緩存起來;
3、 當快照完成後,主Redis會將快照文件和所有緩存的寫命令發送給從Redis;
4、 從Redis接收到後,會載入快照文件並且執行收到的緩存的命令;
5、 之後,主Redis每當接收到寫命令時就會將命令發送從Redis,從而保證數據的一致;
主從配置就是搞一個動態的備份;

6.集羣原理

  6.1 數值存儲:Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽

  ,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點。

  6.2 集羣可用性:①節點之間使用ping-pang判斷彼此的鏈接性,當有一半節點認爲某節點掛了,該節點備用節點頂上。

           ②當有一半主節點掛掉就不可用。

7.redis雪崩和redis穿透處理方案

 緩存穿透:當在大併發情況下,首先在redis緩存中查詢,查詢不到會到db中查詢,從而給db造成壓力。

  方案一:設置布隆過濾器

  方案二:返回空值進行存儲(建議)

 緩存雪崩:某一時段導致大面積緩存key失效

  方案一:redis設置主備

      redis設置緩存鍵的失效時間要均勻(建議)

8.redis實際項目中的使用

  Jedis

  redisTemplate

  

      

 

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