1、string类型
1.1、字符串类型是redis中最基本的数据类型,它能存储任何形式的内容,包含二进制数据,甚至是一张图片(二进制内容)。一个字符串类型的值存储的最大容量是1GB
1.2、命令
set/
get(
setnx)
mset/mget
incr/decr/incrby/decrby/incrbyfloat
append
strlen
2、hash类型
2.1、hash类型的值存储了字段和字段值的映射,字段值只能是字符串,不支持其他数据类型。hash类型的键至多可以存储2^32-1 个字段。
2.2、hash类型适合存储对象:如图:1-1(行存储)和1-2(列存储)
redis可以为任何键增减字段而不影响其他键
2.3、命令
hset/hget/hmset/hmget/hgetall(hsetnx)
hexists,判断键中的属性是否存在
hincrby(hash类型没有hincr命令)
hdel
hkeys/hvals
hlen(获取键中包含多少个字段)
3、list类型
3.1、list是一个
有序的字符串列表,列表
内部实现是使用
双向链表(linked list)实现的。
3.2、list还可以作为队列使用(后面讲)
一个列表类型的键最多能容纳 2^23-1个元素。
3.3、命令
lpush/rpush/lpop/rpop
llen/lrange(-1表示最后一个元素的位置)
lrem(lrem key count value)count分为三种情况
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value 相等的值。
lindex(查询指定角标数据)
lset(修改)
ltrim(截取)
linsert(向指定元素前后插入元素)
rpoplpush:将元素从一个列表转到另一个列表
4、set类型
4.1、set集合中的元素都是不重复的,无序的,一个集合类型键可以存储至多 2^32-1 个元素
4.2、set集合类型和list列表类型的相似之处,如图:2-1所示
4.3、命令
sadd/smembers/srem/sismember
sdiff/sinter(交集)/sunion(并集)
sdiffstore/sinterstore/sunionstore
scard(获取集合长度)/spop(随机从集合中取出并删除一个元素)
srandmember key [count]
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
5、sorted set类型
关联了一个分数,这样可以很方便的获得
分数最高的N个元素(topN)。
5.2、有序集合类型和列表类型的差异
有序集合类型和列表类型的差异
相同点
(1)二者都是有序的
(2)二者都可以获得某一范围的元素
不同点
(1)列表类型是通过双向链表实现的,获取靠近两端的数据速度极快,当列表中元素增多后,访问中间的数据速度会很慢,所以它更加适合很少访问中间元素的应用
(2)有序集合类型是使用散列表和跳跃表(skip list)实现的,所以即使读取位于中间部分的数据速度也很快
(3)列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改这个元素的分值)
(4)有序集合要比列表类型更耗费内存
5.3、命令
zadd/zscore/zrange/zrevrange/
zrangebyscore(默认是闭区间,可使用"("使用开区间)
zincrby/zcard/zcount(获取指定分数范围的元素个数)
zrem/zremrangebyrank/zremrangebyscore
扩展:+inf(正无穷) -inf(负无穷)