1、string类型
字符串类型是redis中最基本的数据类型,也是使用最多的一种数据类型,它能存储任何形式的字符串,包括二进制数据,byte字节等,也就是说string类型能存储任何数据,你可以用它存储序列化后的用户对象,json化的对象,甚至图片,视频等,一个key下的string类型允许存储的最大数据容量是512M;
String类型可以用来存储任何类型的数据; SET, GET;
String类型可以用来做计数器; INCR(增加), DECR, INCRBY,DECRBY
2、list类型
列表类型可以存储一个字符串列表,按照数据加入的顺序排序,它非常方便地在往列表左右两端添加元素(左边称为头部,右边称为尾部)。 LPUSH,RPUSH
一个list列表最大能存放2的32次方-1个元素(4294967295, 40多亿个元素)
列表类型内部使用双向链表实现,所以向列表两端添加元素的时间复杂度为O(1), 获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是很快的,但是如果尝试访问一个非常大的列表的中间元素,则速度会很慢,因为这是一个时间复杂度o(n)操作。
使用场景:
类似时间轴的应用,每个时间点发生的重大事件存入list形成时间轴;
LPUSH(头部添加),RPUSH(尾部添加) ,LRANGE(取出)
使用场景:记住最近的操作,往list列表头部放入元素,取头部的几个元素即为最近记录;
LPUSH,LTRIM
可以作为一个消息传递的顺序队列,从左边放入元素,从右边取出元素;
LPUSH,RPOP
3、set类型
set类型是一个无顺序的字符串集合,集合中每个元素都是不同的,也就是不允许有重复数据,多次添加同一个元素,集合中只会有一个该元素
一个set集合最大能存放2的32次方-1个元素(4294967295, 40多亿个元素)
集合类型和列表类型的最大的区别是无序性/有序性和唯一性/可重复;
set类型在redis内部是使用的值为空的散列表(hash table),所以添加或删除元素操作的时间复杂度都是O(1);
使用场景:
跟踪不同的事情,比如:每天的ip访问量;
使用set做抽奖,把名单放入set,set不会重复,随机弹出元素;
spop,srandmember
4、zset类型
zset类型与set相似,也是一个无重复元素的集合,不同的是zset的每个元素会关联一个分数,这个分数用于对集合元素进行排序;
zset中的元素是唯一的,但是每个元素的分数是可以重复的;
使用场景:
实时的数据排行榜,每次数据的更新会更新分数;
5、hash类型
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
附录:
redis英文版命令大全:https://redis.io/commands
redis中文版命令大全:http://redisdoc.com/