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>