阿裡雲的這羣瘋子
- 分庫分表+水平拆分+Mysql叢集
NoSQL,指的是非關係型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型數據庫的數據庫管理系統的統稱。
NoSQL用於超大規模數據的儲存。(例如谷歌或Facebook每天爲他們的使用者收集萬億位元的數據)。這些型別的數據儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。
序號 | 選項 | 描述 | 預設值 |
---|---|---|---|
1 | -h | 指定伺服器主機名 | 127.0.0.1 |
2 | -p | 指定伺服器埠 | 6379 |
3 | -s | 指定伺服器 socket | |
4 | -c | 指定併發連線數 | 50 |
5 | -n | 指定請求數 | 10000 |
6 | -d | 以位元組的形式指定 SET/GET 值的數據大小 | 2 |
7 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用隨機 key, SADD 使用隨機值 | |
9 | -P | 通過管道傳輸 請求 | 1 |
10 | -q | 強制退出 redis。僅顯示 query/sec 值 | |
11 | –csv | 以 CSV 格式輸出 | |
12 | -l | 生成回圈,永久執行測試 | |
13 | -t | 僅執行以逗號分隔的測試命令列表。 | |
14 | -I | Idle 模式。僅開啓 N 個 idle 連線並等待。 |
<!--jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
<!--fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
Springboot操作數據:Spring-data jpa jdbc mongodb redis
在springBoot2.x原jedis被替換爲lettuce
SpringBoot所有的設定類都有一個自動設定類:RedisAutoConfiguration
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
spring.redis.host=119.3.226.219
spring.redis.password=123456
spring.redis.port=6379
@SpringBootTest
class DemoApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Test
void contextLoads() {
/**
* opsForValue(); 操作字串
* opsForList(); 操作list
* opsForHash(); 操作hash
* opsForSet(); 操作set
* opsForZSet(); 操作zset
* opsForGeo(); 操作地圖
* opsForHyperLogLog();
*/
redisTemplate.opsForValue().set("huang","hhhhh");
Object huang = redisTemplate.opsForValue().get("huang");
System.out.println(huang);
//常用的方法可以通過redisTemplate點出來
//獲取連線的數據庫物件
RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
connection.flushDb();
}
}
組態檔對大小寫不敏感
可以包含多個組態檔
網路設定
通用設定
快照:SNAPSHOTTING
複製:REPLICATION
安全:SECURITY
用戶端:CLIENTS
aof設定:APPEND ONLY MODE
Redis會單獨建立一個子進程來持久化,將數據寫到一個臨時檔案中,持久化結束,替換之前持久化的檔案,整個過程主進程不進行IO操作,確保了效能,如果需要大規模進行數據恢復,且對數據恢復的完整性不是非常敏感,那麼RDB比AOF更加有效,RDB的缺點就是最後一次持久化後數據可能丟失,我們預設的就是RDB,一般情況下不需要修改這個設定
rdb儲存的檔案預設是:dunp.rdb,在
觸發機制 機製:
恢復RDB檔案:將RDB檔案放在redis啓動目錄下就可以了,啓動時會自動檢測檔案恢復數據
# Replication
role:master # 角色
connected_slaves:0 # 從機個數
從機設定修改內容:(本機測試)
預設是主庫,只用設定從機就好了
主機負責寫,從機負責讀取
只要是從機就會馬上負責
從機啓動連線到master後會發送一個sync同步命令
Master接到命令,啓動後臺的存檔進程,同時蒐集 搜集所有接受到的用於修改數據集命令,將整個檔案傳到從機,完成一次同步。
斷開從新連線就會觸發全量複製
如果主機斷開可以手動使用命令是自己成爲主機:slaveof no one
主從切換技術的方法是:當主伺服器宕機後,需要手動把一臺從伺服器切換爲主伺服器,這就需要人工幹預,費事費力,還會造成一段時間內服務不可用。這不是一種推薦的方式,更多時候,我們優先考慮哨兵模式。
哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的進程,作爲進程,它會獨立執行。其原理是哨兵通過發送命令,等待Redis伺服器響應,從而監控執行的多個Redis範例。
作用:
一個哨兵進程對Redis伺服器進行監控,可能會出現問題,爲此,我們可以使用多個哨兵進行監控。各個哨兵之間還會進行監控,這樣就形成了多哨兵模式。
用文字描述一下故障切換(failover)的過程。假設主伺服器宕機,哨兵1先檢測到這個結果,系統並不會馬上進行failover過程,僅僅是哨兵1主觀的認爲主伺服器不可用,這個現象成爲主觀下線。當後面的哨兵也檢測到主伺服器不可用,並且數量達到一定值時,那麼哨兵之間就會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。切換成功後,就會通過發佈訂閱模式,讓各個哨兵把自己監控的從伺服器實現切換主機,這個過程稱爲客觀下線。這樣對於用戶端而言,一切都是透明的。
sentinel monitor myredis ip 埠號 1
# 1 代表主機掛了,從機投票讓誰接替,票數最多成爲主機
設定項 | 參數型別 | 作用 |
---|---|---|
port | 整數 | 啓動哨兵進程埠 |
dir | 資料夾目錄 | 哨兵進程服務臨時資料夾,預設爲/tmp,要保證有可寫入的許可權 |
sentinel down-after-milliseconds | <服務名稱><毫秒數(整數)> | 指定哨兵在監控Redis服務時,當Redis服務在一個預設毫秒數內都無法回答時,單個哨兵認爲的主觀下線時間,預設爲30000(30秒) |
sentinel parallel-syncs | <服務名稱><伺服器數(整數)> | 指定可以有多少個Redis服務同步新的主機,一般而言,這個數位越小同步時間越長,而越大,則對網路資源要求越高 |
sentinel failover-timeout | <服務名稱><毫秒數(整數)> | 指定故障切換允許的毫秒數,超過這個時間,就認爲故障切換失敗,預設爲3分鐘 |
sentinel notification-script | <服務名稱><指令碼路徑> | 指定sentinel檢測到該監控的redis範例指向的範例異常時,呼叫的報警指令碼。該設定項可選,比較常用 |
使用者想要查詢一個數據,Redis中沒有,會向持久層數據庫中查詢,發現也沒有,查詢失敗
當有很多使用者時,快取如果都沒有命中,就都去請求持久層數據庫,會給持久層數據庫帶來很大壓力,這個時候相當於快取穿透
快取雪崩:某一個時間段,快取集中過期失效,Redis宕機
解決方案: