Redis 隨筆
1. 特色
- 非關係數據庫 non-relational database
- 內存數據庫
- 高性能
- 主從複製
- 可持久化存儲
- 發佈與訂閱
- 支持腳本
2. 數據類型5種
STRING
- 能夠是字符串、整數、浮點數
- 操做
- 對整個字符串或都字符串的一部分執行操做;
- 對整數或浮點數執行自增或自減操做;
LIST
- 鏈表,每一個節點都包含一個字符串
- 操做
- 從鏈表兩端推入或彈出元素;
- 依據偏移量對鏈表進行修剪(trim);
- 讀取單個或者多個元素;
- 依據值查找或移動元素;
SET
- 包含字符串的無序收集器,而且各字符串獨一無2、各不相同
- 操做
- 添加、獲取、移除單個元素;
- 檢查一個元素是否存在於集合中;
- 計算交集、並集、差集;
- 從集合裏面隨機獲取元素;
HASH
ZSET
- 字符串成員與浮點數分值之間的有序映射,元素的排列順序由分值的大小決定
- 操做
- 添加、獲取、刪除單個元素;
- 依據分值範圍或者成員來獲取元素
3. 命令
基本事務 transaction
- MULTI
- EXEC
- UNWATCH
- WATCH
- DISCARD
4. 數據安全與性能保障
持久化
- 快照 snapshotting
- 將存在於某一時刻的全部數據都寫入硬盤裏面
- 操做
- 執行 BGSAVE
- 執行 SAVE
- 配置選項 save 60 10000 ; 能夠多個條件,條件知足時執行一次BGSAVE
- 收到SHUTDOWN 或 TERM信號時,會執行SAVE
- 一個Redis鏈接另外一個Redis 服務器,併發送SYNC 開始複製時,主服務器非剛執行完BGSAVE操做,就會執行BGSAVE
- AOF 只追加文件 append-only file
- AOF 持久化會將被執行的寫命令寫到AOF文件的末尾,以此來記錄數據發生的變化。
- 重寫/壓縮AOF文件
- 執行命令 BGREWRITEAOF
- 設置選項
- auto-aof-rewrite-min-size
- auto-aof-rewrite-percentage
複製 replication
- 讓其餘服務器擁有一個不斷更新的數據副本,從而使擁有副本的服務器能夠用於處理客戶端發送的讀請求。
- slaveof host port
- slaveof no one
- 主從鏈
- 檢驗硬盤寫入
- INFO命令輸出結果aof_pending_bio_fsync 屬性的值是否爲0
- 驗證快照文件和AOF文件
- redis-check-aof
- redis-check-dump
事務
- 事務型流水線
- PyRedis
- conn.pipeline()
- conn.multi *** conn.exec
- 非事務性流水線
性能測試工具
分佈式鎖
Redis使用WATCH命令來代替對數據進行加鎖,由於WATCH只會在數據被其餘客戶端搶先修改了的狀況下通知執行了這個命令的客戶端,而不會阻止其餘客戶端對數所進行修改,因此這個命令被稱爲樂觀鎖(optimistic locking)html
發佈、訂閱
publish、subscriberedis
下降內存佔用
短結構
Redis 爲列表、集合、散列和有序集合提供了一組配置選項,可讓Redis以更節約空間的方式存儲長度較短的結構。算法
在列表、散列、有序集合的長度較短或者體積較小的時候,Redis能夠選擇使用和種名爲壓縮列表(ziplist)的緊湊存儲方式來存儲這些結構。壓縮列表以序列化的方式存儲數據,這些數據每次被讀取的時候都要進行解碼,每次被寫入的時候也要進行局部的從新編碼,而且可能須要對內存裏面的數據進行移動。數據庫
通常壓縮列表的長度限制在 1024 個之內,每一個元素體積不能超過 64字節,通常能同時兼顧內存佔用和高性能這兩方面優勢。緩存
配置使用
* list-max-ziplist-entries 512 #容許包含的最大元素數
* list-max-ziplist-value 64 #每一個節點最大致積是多少個字節
* hash-max-ziplist-entries 512
* hash-max-ziplist-value 64
* zset-max-ziplist-entries 128
* zset-max-ziplist-value 64
* set-max-intset-entries 512
分片結構 sharding
- 經過哈希環等算法,把列表、集合、散列分佈到多處存儲,來減少元素數,從而使用壓縮列表減小內存佔用。
- 打包存儲二進制位和字節
- 對於簡短而且長度固定的連續ID,能夠用分片Redis字符串去存儲。
擴展Redis
- 增長從服務器
- 使從服務器可寫
slave-read-only安全
分片擴展寫性能和內存容量服務器
解決實用案例
- Web 登陸緩存
- 購物車
- 網頁緩存
- 數據行緩存
- 基於搜索的應用
- 定向廣告
- 社交網站
相關連接:
Redis 1
Redis 2併發
XMIND:
app