1. 程式人生 > 其它 >測試新弄好的部落格效果

測試新弄好的部落格效果

Redis筆記:

什麼是Redis?

Redis 是開源免費的,遵守BSD協議,是一個高效能的key-value非關係型資料庫。

redis單執行緒問題

所謂的單執行緒指的是網路請求模組使用了一個執行緒(所以不需考慮併發安全性),即一個執行緒處理所有網路請求,其他模組仍用了多個執行緒。

redis採用多路複用機制:即多個網路socket複用一個io執行緒,實際是單個執行緒通過記錄跟蹤每一個Sock(I/O流)的狀態來同時管理多個I/O流.

*Redis**特點*

Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。

Redis不僅僅支援簡單的key-value型別的資料,同時還提供String,list,set,zset,hash等資料結構的儲存。

Redis支援資料的備份,即master-slave模式的資料備份。

效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。

豐富的特性 – Redis還支援 publish/subscribe, 通知, 設定key有效期等等特性。

*redis作用:*

可以減輕資料庫壓力,查詢記憶體比查詢資料庫效率高。

Redis應用:

token生成、session共享、分散式鎖、自增id、驗證碼等。

*比較重要的**3**個可執行檔案:*

redis-server:Redis伺服器程式

redis-cli:Redis客戶端程式,它是一個命令列操作工具。也可以使用telnet根據其純文字協議操作。

redis-benchmark:Redis效能測試工具,測試Redis在你的系統及配置下的讀寫效能。

RDB同步機制:

  1. 開啟和關閉:預設情況下是開啟了。如果想關閉,那麼註釋掉redis.conf檔案中的所有save選項就可以了。
  2. 同步機制:
    • save 900 1:如果在900s以內發生了1次資料更新操作,那麼就會做一次同步操作。
    • save 300 10:如果在300s以內發生了10資料更新操作,那麼就會做一次同步操作。
    • save 60 10000:如果在60s以內發生了10000資料更新操作,那麼就會做一次同步操作。
  3. 儲存內容:具體的值,而是命令。並且是經過壓縮後儲存進去的。
  4. 儲存路徑:根據redis.conf下的dir以及rdbfilename
    來指定的。預設是/var/lib/redis/dump.rdb
  5. 優點:
    • 儲存資料到檔案中會進行壓縮,檔案體積比aof小。
    • 因為儲存的是redis具體的值,並且會經過壓縮,因此在恢復的時候速度比AOF快。
    • 非常適用於備份。
  6. 缺點:
    • RDB在多少時間內發生了多少寫操作的時候就會出發同步機制,因為採用壓縮機制,RDB在同步的時候都重新儲存整個Redis中的資料,因此你一般會設定在最少5分鐘才儲存一次資料。在這種情況下,一旦伺服器故障,會造成5分鐘的資料丟失。
    • 在資料儲存進RDB的時候,Redis會fork出一個子程序用來同步,在資料量比較大的時候,可能會非常耗時。

AOF同步機制:

  1. 開啟和關閉:預設是關閉的。如果想要開啟,那麼修改redis.conf中的appendonly yes就可以了
  2. 同步機制:
    • appendfsync always:每次有資料更新操作,都會同步到檔案中。
    • appendfsync everysec:每秒進行一次更新。
    • appendfsync no:使用作業系統的方式進行更新。普遍是30s更新一次。
  3. 儲存內容:儲存的是具體的命令。不會進行壓縮。
  4. 儲存路徑:根據redis.conf下的dir以及appendfilename來指定的。預設是/var/lib/redis/appendonly.aof
  5. 優點:
    • AOF的策略是每秒鐘或者每次發生寫操作的時候都會同步,因此即使伺服器故障,最多隻會丟失1秒的資料。
    • AOF儲存的是Redis命令,並且是直接追加到aof檔案後面,因此每次備份的時候只要新增新的資料進去就可以了。
    • 如果AOF檔案比較大了,那麼Redis會進行重寫,只保留最小的命令集合。
  6. 缺點:
    • AOF檔案因為沒有壓縮,因此體積比RDB大。
    • AOF是在每秒或者每次寫操作都進行備份,因此如果併發量比較大,效率可能有點慢。
    • AOF檔案因為儲存的是命令,因此在災難恢復的時候Redis會重新執行AOF中的命令,速度不及RDB。

給redis指定密碼:

  1. 設定密碼:在reids.conf配置檔案中,將requirepass pasword取消註釋,並且指定你想設定的密碼。
  2. 使用密碼連線reids:
    • 先登入上去,然後再使用autho password命令進行授權。
    • 在連線的時候,通過-a引數指定密碼進行連線。

其他機器連線redis:

如果想要讓其他機器連線本機的redis伺服器,那麼應該在redis.conf配置檔案中,指定bind 本機的ip地址。這樣別的機器就能連線成功。

redis資料結構

*儲存字串*
1.set key value:設定key持有指定的字串value,如果該key存在則進行覆蓋操作,總是返回OK
2.get key: 獲取key的value。如果與該key關聯的value不是String型別,redis將返回錯誤資訊,因為get命令只能用於獲取String value;如果該key不存在,返回null。
3.getset key value:先獲取該key的值,然後在設定該key的值。
4.incr key:將指定的key的value原子性的遞增1. 如果該key不存在,其初始值為0,在incr之後其值為1。如果value的值不能轉成整型,如hello,該操作將執行失敗並返回相應的錯誤資訊
5.decr key:將指定的key的value原子性的遞減1.如果該key不存在,其初始值為0,在incr之後其值為-1。如果value的值不能轉成整型,如hello,該操作將執 行失敗並返回相應的錯誤資訊。
6.incrby key increment:將指定的key的value原子性增加increment,如果該key不存在,器初始值為0,在incrby之後,該值為increment。如果該值不能轉成 整型,如hello則失敗並返回錯誤資訊
7.decrby key decrement:將指定的key的value原子性減少decrement,如果該key不存在,器初始值為0,在decrby之後,該值為decrement。如果該值不能 轉成整型,如hello則失敗並返回錯誤資訊
8.append key value:如果該key存在,則在原有的value後追加該值;如果該key 不存在,則重新建立一個key/value