redis常见的五种数据类型:string、hash、list、set、sorted set(zset)
string
string是简单的key-value类型,效率高。
常用命令:get、set、incr、decr、mget等
应用:常规的key-value操作、常规计数(微博数、粉丝数、点赞数)
hash
hash其实也是key-value类型,但是相比较string而言,hash的value保存的是一个hashMap,可以通过hashMap中的key(field)来对属性进行修改和存取,field过多可能会导致耗时长。
常用命令:hget,hset,hgetall 等
应用:可以用来存储部分变更的数据,如用户信息等
list
list的本质是链表,实现是双向链表,支持反向查找和遍历,既可以做栈,也可以做队列。
常用命令:lpush,rpush,lpop,rpop,lrange等
应用:最新消息排行、关注列表、粉丝列表、取最新n个数
set
set是与list类似的列表,但是可以自动排重,成为一个集合,还可以提供一个重要接口来查询数据是否在集合中。集合还可以很方便的进行交集、并集和差集的查询。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
常用命令:sadd,spop,smembers,sunion 等
应用:关注列表、粉丝列表、某时间内不重复的数据
zset
有序的set集合,可以提供一个优先级(score)用来为数据排序。每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。成员唯一,但是分数可能会有相同的。
常用命令:zadd,zrange,zrem,zcard等
应用:带权重的排行榜