1.redis受限於基於內存存儲,有時會難以響應到全部的請求,但redis提供了故障轉移(failover)的功能,redis實現了主從複製的特性。執行復制的從服務器連上主服務器後,主服務器會發給鏈接上的從服務器一個原始數據庫(copy),以後主服務器的全部寫操做都會發送給從服務器,從服務器會隨着主服務器的更新進行更新,因此執行讀操做的客戶端能夠連到任意一個從服務器上查詢,以減緩主服務器的壓力,避免集中式的訪問。redis
2.redis和其餘數據庫的比較數據庫
3. 5種鍵值數據(String,list,set,hash.zset)服務器
3.1字符串(string)code
操做的命令爲:get :獲取某一鍵的值內存
set:設置某一鍵的值rem
del:刪除某一鍵(適用於全部的數據類型)字符串
3.2 list列表(值可重複) 有序get
操做的命令爲: rpush 從列表右端存入值string
lpush 從列表左端存入值hash
lrange 獲取給定範圍的全部值 0爲開始,-1爲結束
lindex 獲取給定位置的值
rpop 從列表右端刪除值
lpop 從列表左端刪除值
127.0.0.1:6379> rpush list-key 11 (integer) 1 127.0.0.1:6379> lpush list-key 22 (integer) 2 127.0.0.1:6379> lrange list-key (error) ERR wrong number of arguments for 'lrange' command 127.0.0.1:6379> lpush list-key 33 (integer) 3 127.0.0.1:6379> lrange list-key 0,-1 (error) ERR wrong number of arguments for 'lrange' command 127.0.0.1:6379> lrange list-key 0 -1 1) "33" 2) "22" 3) "11" 127.0.0.1:6379> lrange list-key 0 (error) ERR wrong number of arguments for 'lrange' command 127.0.0.1:6379> lrange list-key 0 1 1) "33" 2) "22" 127.0.0.1:6379> lindex list-key 1 "22" 127.0.0.1:6379> lindex list-key 0 "33" 127.0.0.1:6379> rpop list-key "11" 127.0.0.1:6379> lrange list-key 0 -1 1) "33" 2) "22" 127.0.0.1:6379> lpop list-key "33" 127.0.0.1:6379> lrange list-key 0 -1 1) "22" 127.0.0.1:6379>
3.3 集合Set(不予許存重複值),集合經過散列表保證存儲的每一個值都是不一樣的,無序
操做命令爲: sadd :向集合中插入值
smembers :獲取集合中的值
sismember :檢查集合中是否有某個值
srem:刪除集合中的某個值
127.0.0.1:6379> sadd set-key 11 (integer) 1 127.0.0.1:6379> sadd set-key 22 (integer) 1 127.0.0.1:6379> sadd set-key 44 (integer) 1 127.0.0.1:6379> smembers set-key 1) "11" 2) "22" 3) "44" 127.0.0.1:6379> sismember set-key 22 (integer) 1 127.0.0.1:6379> sismember set-key 33 (integer) 0 127.0.0.1:6379> srem set-key 22 (integer) 1 127.0.0.1:6379> sismember set-key 22 (integer) 0 127.0.0.1:6379> smembers set-key 1) "11" 2) "44" 127.0.0.1:6379>
3.4 散列
操做命令: hset 向散列key中存入鍵值對
hgetall 獲取散列key中的鍵值對
hdel 刪除散列key中的鍵值對的某一鍵值對
127.0.0.1:6379> hset hash-key sub-key1 value1 (integer) 1 127.0.0.1:6379> hset hash-key sub-key2 value2 (integer) 1 127.0.0.1:6379> hset hash-key sub-key3 value3 (integer) 1 127.0.0.1:6379> hgetall hash-key 1) "sub-key1" 2) "value1" 3) "sub-key2" 4) "value2" 5) "sub-key3" 6) "value3" 127.0.0.1:6379> hset hash-key sub-key3 value3 (integer) 0 127.0.0.1:6379> hgetall hash-key 1) "sub-key1" 2) "value1" 3) "sub-key2" 4) "value2" 5) "sub-key3" 6) "value3" 127.0.0.1:6379> hset hash-key sub-key3 value4 (integer) 0 127.0.0.1:6379> hgetall hash-key 1) "sub-key1" 2) "value1" 3) "sub-key2" 4) "value2" 5) "sub-key3" 6) "value4" 127.0.0.1:6379> hdel hash-key sub-key2 (integer) 1 127.0.0.1:6379> hgetall hash-key 1) "sub-key1" 2) "value1" 3) "sub-key3" 4) "value4" 127.0.0.1:6379>
3.5 有序集合
和散列同樣存儲的是鍵值對,有序集合的鍵成爲成員(member),值爲分數(score)
既能夠根據成員訪問分值,又能夠根據分值以及分值的順序獲取成員
操做命令 : zadd :將一個給定分值的成員添加到有序集合裏面
zrange : 根據元素在集合中所處的位置,獲取多個元素
zrem :刪除集合中的元素
zrangebuscores: 根據分值獲取集合中符合範圍的元素
127.0.0.1:6379> zadd zset-key 728 member1 (integer) 1 127.0.0.1:6379> zadd zset-key 982 member0 (integer) 1 127.0.0.1:6379> zadd zset-key 982 member0 (integer) 0 127.0.0.1:6379> zrange zset-key 0 -1 withscores 1) "member1" 2) "728" 3) "member0" 4) "982" 127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores 1) "member1" 2) "728" 127.0.0.1:6379> zrem zset-key member1 (integer) 1 127.0.0.1:6379> zrem zset-key member1 (integer) 0 127.0.0.1:6379> zrange zset-key 0 -1 withscores 1) "member0" 2) "982" 127.0.0.1:6379>