1.redis受限于基于内存存储,有时会难以响应到所有的请求,但redis提供了故障转移(failover)的功能,redis实现了主从复制的特性。执行复制的从服务器连上主服务器后,主服务器会发给连接上的从服务器一个原始数据库(copy),之后主服务器的所有写操作都会发送给从服务器,从服务器会随着主服务器的更新进行更新,所以执行读操作的客户端可以连到任意一个从服务器上查询,以减缓主服务器的压力,避免集中式的访问。
2.redis和其他数据库的比较
3. 5种键值数据(String,list,set,hash.zset)
3.1字符串(string)
操作的命令为:get :获取某一键的值
set:设置某一键的值
del:删除某一键(适用于所有的数据类型)
3.2 list列表(值可重复) 有序
操作的命令为: rpush 从列表右端存入值
lpush 从列表左端存入值
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>