測試新弄好的部落格效果
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同步機制:
- 開啟和關閉:預設情況下是開啟了。如果想關閉,那麼註釋掉
redis.conf
檔案中的所有save
選項就可以了。 - 同步機制:
- save 900 1:如果在900s以內發生了1次資料更新操作,那麼就會做一次同步操作。
- save 300 10:如果在300s以內發生了10資料更新操作,那麼就會做一次同步操作。
- save 60 10000:如果在60s以內發生了10000資料更新操作,那麼就會做一次同步操作。
- 儲存內容:具體的值,而是命令。並且是經過壓縮後儲存進去的。
- 儲存路徑:根據
redis.conf
下的dir
以及rdbfilename
/var/lib/redis/dump.rdb
。 - 優點:
- 儲存資料到檔案中會進行壓縮,檔案體積比aof小。
- 因為儲存的是redis具體的值,並且會經過壓縮,因此在恢復的時候速度比AOF快。
- 非常適用於備份。
- 缺點:
- RDB在多少時間內發生了多少寫操作的時候就會出發同步機制,因為採用壓縮機制,RDB在同步的時候都重新儲存整個Redis中的資料,因此你一般會設定在最少5分鐘才儲存一次資料。在這種情況下,一旦伺服器故障,會造成5分鐘的資料丟失。
- 在資料儲存進RDB的時候,Redis會fork出一個子程序用來同步,在資料量比較大的時候,可能會非常耗時。
AOF同步機制:
- 開啟和關閉:預設是關閉的。如果想要開啟,那麼修改redis.conf中的
appendonly yes
就可以了 - 同步機制:
- appendfsync always:每次有資料更新操作,都會同步到檔案中。
- appendfsync everysec:每秒進行一次更新。
- appendfsync no:使用作業系統的方式進行更新。普遍是30s更新一次。
- 儲存內容:儲存的是具體的命令。不會進行壓縮。
- 儲存路徑:根據
redis.conf
下的dir
以及appendfilename
來指定的。預設是/var/lib/redis/appendonly.aof
。 - 優點:
- AOF的策略是每秒鐘或者每次發生寫操作的時候都會同步,因此即使伺服器故障,最多隻會丟失1秒的資料。
- AOF儲存的是Redis命令,並且是直接追加到aof檔案後面,因此每次備份的時候只要新增新的資料進去就可以了。
- 如果AOF檔案比較大了,那麼Redis會進行重寫,只保留最小的命令集合。
- 缺點:
- AOF檔案因為沒有壓縮,因此體積比RDB大。
- AOF是在每秒或者每次寫操作都進行備份,因此如果併發量比較大,效率可能有點慢。
- AOF檔案因為儲存的是命令,因此在災難恢復的時候Redis會重新執行AOF中的命令,速度不及RDB。
給redis指定密碼:
- 設定密碼:在
reids.conf
配置檔案中,將requirepass pasword
取消註釋,並且指定你想設定的密碼。 - 使用密碼連線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