Redis的基本类型有:字符串类型、散列类型、列表类型、集合类型、有序集合类型
1、字符串类型,它能存储任何形式的字符串,包括二进制数据,可以用来存储用户的邮箱、JSON化的对象甚至是一张图片,一个字符串类型键允许存储的数据的最大容量为512M。基本命令:
1)赋值:SET key value 取值:GET key
2)递增数字:INCR key 增加指定的整数:INCRBY key value 递减数字:DECR key
2、散列类型:散列类型的键值是一种字典结构,其存储了字段(file)和字段值的映射,但字段值只能是字符串,不能是其他数据类型。
1)赋值:HESET key field value 取值:HGET key field
2)获取键中所有字段和字段值:HGETALL key
3)判断字段是否存在:HEXISTS key field
4)删除字段:HDEL key field
3、列表类型:列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为O(1),获取约接近两端的元素速度就越快。
1)向列表左侧增加元素 LPUSH key value [ value ....] 向列表右侧增加元素 RPUSH key value [ value .....]
2)从列表两端弹出元素:LPOP key RPOP key
3)获取列表中元素的个数:LLEN key
4)获得列表片段:LRANGE key start stop
5)删除列表中指定的值:LREM key count value LREM命令会删除列表中前count个值为value的元素,返回值是实际删除的元素个数。
4、集合类型:集合类型在Redis内部是使用值为空的散列表(hash table)实现的,所以这些操作的时间复杂度都是O(1)。最方便的是多个集合类型键之间还可以进行并集、交集和差集运算。
1)、增加元素: SADD key member[member ...] 删除元素 :SREM key member [member ...]
2)、获得集合中所有的元素:SMEMBERS key
3)、判断元素是否在集合中:SISMEMBER key member
4)、差集计算:SDIFF key [key ...] 交集计算:SINTER key [key ...] 并集计算:SUNION key [key ...]
5、有序集合类型(sorted set):有序集合类型是在集合类型的基础上为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但是它们的分数却可以相同。有序集合类型在某些方面和列表类型有些相似:
(1)、二者都是有序的。
(2)、二者都可以获得某一范围内的元素
但是二者之间有着很大的区别,这使得它们的应用场景也是不同的。
(1)、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会教慢,所以它更适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用。
(2)、有序集合类型是使用散列表和跳跃表实现的,所以即使读取位于中间部分的数据速度也很快。
(3)、列表中不能简单的调整某个元素的位置,但是有序集合却可以(通过更改这个元素的分数)
(4)、有序集合要比列表类型更消耗内存
1)、增加元素: ZADD key score member [ score member ...]
2)、获得元素的分数:ZSCORE key member
3)、获得排名在某个范围的元素列表:ZRANGE key start stop
4)、获得指定分数范围的元素:ZRANGEBYSCORE key min max
5)、增加某个元素的分数:ZINCRBY key increment member