为什么redis这么快?
1.完全基于内存,绝大部分请求都是基于内存操作,执行效率高
2.数据结构简单,对数据操作也简单
3.采用单线程,单线程也能处理高并发请求
4.采用多路I/O复用模型,非阻塞IO
基础数据类型
String
> set hello world
OK
> get hello
"world"
> del hello
(integer) 1
> get hello
(nil)
LIST
rpush: 向list尾部添加元素,
lpush: 向list头部添加元素
lrange:按索引范围获取值,格式是:lrange list的key 起始索引 终止索引 (-1表示最后一个索引)
lindex: 返回索引对应值
> rpush list-key item
(integer) 1
> rpush list-key item2
(integer) 2
> rpush list-key item
(integer) 3
> lrange list-key 0 -1
1) "item"
2) "item2"
3) "item"
> lindex list-key 1
"item2"
> lpop list-key
"item"
> lrange list-key 0 -1
1) "item2"
2) "item"
SET
sadd:添加元素
smembers:打印set
sismember: 检查元素是否存在,存在返回1,不存在返回0
screm:返回被成功移除的元素的数量,不包括被忽略的元素。
> sadd set-key item
(integer) 1
> sadd set-key item2
(integer) 1
> sadd set-key item3
(integer) 1
> sadd set-key item
(integer) 0
> smembers set-key
1) "item"
2) "item2"
3) "item3"
> sismember set-key item4
(integer) 0
> sismember set-key item
(integer) 1
> srem set-key item2
(integer) 1
> srem set-key item2
(integer) 0
> smembers set-key
1) "item"
2) "item3"
HASH
hset:设置键值
hgetall :获取所有键值
hdel:删除键值对,成功返回1 否则返回0
> hset hash-key sub-key1 value1
(integer) 1
> hset hash-key sub-key2 value2
(integer) 1
> hset hash-key sub-key1 value1
(integer) 0
> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"
> hdel hash-key sub-key2
(integer) 1
> hdel hash-key sub-key2
(integer) 0
> hget hash-key sub-key1
"value1"
> hgetall hash-key
1) "sub-key1"
2) "value1"
ZSET
首先学习ZSET我们要知道其分数值得概念,我们的ZSET打印的时候是按照其score的大小顺序打印的。
zadd:添加元素以及其对应score
zrange : 打印zset
zrangebyscore :根据score打印元素
zrem :移除元素
> zadd zset-key 728 member1
(integer) 1
> zadd zset-key 982 member0
(integer) 1
> zadd zset-key 982 member0
(integer) 0
> zrange zset-key 0 -1 withscores
1) "member1"
2) "728"
3) "member0"
4) "982"
> zrangebyscore zset-key 0 800 withscores
1) "member1"
2) "728"
> zrem zset-key member1
(integer) 1
> zrem zset-key member1
(integer) 0
> zrange zset-key 0 -1 withscores
1) "member0"
2) "982"