Redis基礎及入門
一. 什麽是 Redis
Redis 是一個可基於內存,有著完備的持久化機制並以 Key-Value 形式存儲的非關系型數據庫。也稱為數據結構服務器。
二. Redis 的優勢。
支持數據的持久化,可以將內存中的數據保存在磁盤中,便於重啟時再次使用。也就是我們平時說的緩存機制。
提供 list ,set ,zset ,hash 等數據結構的存儲
支持數據的備份。即master-slave模式的數據備份。
三. 服務端的安裝以及啟動客戶端
1. 安裝並啟動服務端
$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz --獲取到下載版本的網址
$ tar xzf redis-3.2.9.tar.gz --解壓壓縮包
$ cd redis-3.2.9 --打開目錄
$ make --編譯
$ src/redis-server redis.conf --啟動服務端(使用默認端口6379)
2. 啟動客戶端
$ src redis-cli
四. Redis命令及數據類型
1. 數據類型
String:
redis 的最基本類型。可以是任何數據,如字符串、整數、浮點,這些統稱為元素。
示例:
常用命令:
SET key value :設置指定 key 的值
GET key :獲取指定 key 的值
MGET key1 [ key2 ... ] :獲取多個指定 key 的值
STRLEN key :返回 key 所存儲的字符串值的長度
MSET key1 value1 [ key2 value2 ... ] :同時設置一個或多個 key -value
INCR key :將 key 中存儲的數字 + 1
INCRBY key increment:給 key 中存儲的數字加上指定數字( increment )
DECR key:將 key 中存儲的數字 - 1
DECRBY key decrement:給 key 中存儲的數字減去指定數字( increment )
APPEND key value :追加字符串
hash (哈希表):
key-value的散列組,是一個string類型的field和value的映射表,適合用於存儲對象
示例:
常用命令:
HSET key field value:將哈希表 key 中的字段 field 的值設為 value
HGET key field:獲取存儲在哈希表中指定字段的值。
HLEN key:獲取哈希表中字段的數量
HMGET key field1 [ field2 ... ]:獲取全部字段的值
HMSET key field1 value1 [ field2 value2 ... ]:同時將多個 field-value (域-值)對設置到哈希表 key 中。
list:
一個有序的序列集合並且每個節點都包含了一個元素
示例:
常用命令:
LLEN key:獲取列表長度
LPUSH key value1 [ value2 ... ]:將一個或多個值插入列表
RPOP key:移除並獲取列表最後一個元素
LPOP key:移出並獲取列表的第一個元素
LRANGE key start stop:獲取列表指定範圍內的元素
set:
存儲各不相同的元素
示例:
常用命令:
SADD key member1 [ member2 ... ]:向集合添加一個或多個成員
SMEMBERS key member:返回集合中的所有成員
SREM key member1 [ member2 ... ]:移除集合中一個或多個成員
SCARD key:獲取集合的成員數
SISMEMBER key member:判斷 member 元素是否是集合 key 的成員
sort set (有續集合):
帶分數的score-value有序集合,其中 value 是唯一的
示例:
常用命令:
ZADD key score1 member1 [ score2 member2 ... ]:向有序集合添加一個或多個成員,或修改已存在成員的分數
ZCARD key:獲取有序集合的成員數
ZRANK key member:返回有序集合中指定成員的索引
ZRANGE key start stop [ WITHSCORES ]:通過索引區間返回有序集合指定區間內的成員
ZCOUNT key min max:計算在有序集合中指定區間分數的成員數
ZREM key member [ member2 ... ]:移除有序集合中的一個或多個成員
2. 命令
1. HyperLogLog
用來做基數統計的算法。無論輸入元素的數量或體積有多大,都只占用固定的、很少的空間。且元素只用來計算基數,並不會存儲元素本身。
常用命令:
PFADD key element [ element ... ]:添加指定元素到 HyperLogLog 中
PFCOUNT key [ key ... ]:返回給定 HyperLogLog 的基數估算值。
PFMERGE destkey soucekey [ sourcekey ... ]:將多個 HyperLogLog 合並為一個 HyperLogLog
2. 發布訂閱(pub/sub)
一種消息通信模式:發送者(pub)發送消息,訂閱者(sub)接收消息。
客戶端可以訂閱任意數量的頻道。
常用命令:
PSUBSCRIBE pattern [ pattern ... ]:訂閱一個或多個符合給定模式的頻道
PUBSUB subcommand [argument [ argument ... ] ]:查看訂閱與發布系統狀態。
PUBLISH channel message:將信息發送到指定的頻道。
PUNSUBSCRIBE [ pattern [ pattern ... ] ]:退訂所有給定模式的頻道
SUBSCRIBE channel [ channel ... ]:訂閱給定的一個或多個頻道的信息。
UNSUBSCRIBE [ channel [ channel ... ] ]:指退訂給定的頻道。
3. 事物
可一次性執行多個命令且1. 事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。(事物是一個單獨隔離操作) 2. 事務中的命令要麽全部被執行,要麽全部都不執行。(事務是一個原子操作)
執行過程:開始事物 --> 命令入隊 --> 執行事務
常用命令:
MULTI:標記一個事物塊的開始
EXEC:執行所有事務塊內的命令。
DISCARD:取消事務,放棄執行事務塊內的所有命令。
UNWATCH:取消 WATCH 命令對所有 key 的監視。
WATCH:監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麽事務將被打斷。
4. 腳本
使用 Lua 解釋器來執行腳本。
常用命令:
EVAL script numkeys key [key ...] arg [arg ...]:執行 Lua 腳本。
SCRIPT EXISTS script [ script ... ]:查看指定的腳本是否已經被保存在緩存當中。
SCRIPT FLUSH:從腳本緩存中移除所有腳本
SCRIPT KILL:殺死當前正在運行的 Lua 腳本。
SCRIPT LOAD script:將腳本 script 添加到腳本緩存中,但並不立即執行這個腳本
5. 連接
連接 redis 服務
常用命令:
AUTH password:驗證密碼是否正確
ECHO message:打印字符串
PING:查看服務是否運行
QUIT:關閉當前連接
SELECT index:切換到指定的數據庫
6. 服務器
管理 redis 服務
常用命令:
BGSAVE:在後臺異步保存當前數據庫的數據到磁盤
CLIENT KILL [ip:port] [ID client-id]:關閉客戶端連接
CLIENT LIST:獲取連接到服務器的客戶端連接列表
CLIENT GETNAME:獲取連接的名稱
CLIENT PAUSE timeout:在指定時間內終止運行來自客戶端的命令
CLIENT SETNAME connection-name:設置當前連接的名稱
CLUSTER SLOTS:獲取集群節點的映射數組
CONFIG REWRITE:對啟動 Redis 服務器時所指定的 redis.conf 配置文件進行改寫
INFO [section]:獲取 Redis 服務器的各種信息和統計數值
LASTSAVE:返回最近一次 Redis 成功將數據保存到磁盤上的時間,以 UNIX 時間戳格式表示
ROLE:返回主從實例所屬的角色
SAVE:異步保存數據到硬盤
SHUTDOWN [NOSAVE] [SAVE]:異步保存數據到硬盤,並關閉服務器
SLAVEOF host port:將當前服務器轉變為指定服務器的從屬服務器(slave server
7. 數據備份與恢復
8. 安全
9. 性能測試
10. 客戶端連接
11. 管道技術
12. 分區
五. Redis 的配置文件(redis.conf)參數詳解
六. 擴展內容
Redis基礎及入門