String(字符串)
简单的key/value方式,任何类型都可以转换成string进行存储。
常用命令
命令 | 含义 |
---|---|
set key vaue | 设置属性值 |
get key | 获取属性值 |
exists key | 判断某个key是否存在 |
expire key second | 设置key的失效时间 |
ttl key | 查看key还有多久失效 |
del key | 删除指定key |
适用场景
可以用来做一些简单信息的缓存,利用自增属性计数(统计、点击量等等),定时过期,分布式锁、分布式会话等场景。
Hash(哈希)
string类型的field和value的映射表,每个hash可以存储2^32 - 1 个键值对
常用命令
命令 | 含义 |
---|---|
hset key field value [fidle value…] | 设置属性值 |
hlen key | 查看key中的字段数量 |
hincrby key field increment | 为 key 中的指定字段的整数值加上增量 increment |
hget key field | 获取key中指定属性的值 |
hgetall key | 获取key中所有的属性 |
hdel key field [field…] | 删除key中指定的属性 |
适用场景
hash 特别适合用于存储对象,但是string也可以存储对象,二者的选择在于,对象的属性是否会频繁发生修改,如果频繁修改,就不适用于string,因为它不够灵活,修改一个属性也必须将整个对象重新提取赋值再序列化,如果使用hash,是可以针对单个属性进行修改。
hash存储对象时,如果对象的某个属性非基本类型,比如也是一个对象,那么存储这个对象就必须手动序列化,这样不如直接使用string。
购物车场景中的多个需求场景,用hash提供的命令都能够很好的解决。
list(列表)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),也可以从头部或者尾部取出元素,一个列表最多可以包含 2^32 - 1 个元素。
常用命令
命令 | 含义 |
---|---|
lpush key value1 [value2…] | 从链表头部添加 |
rpush key value1 [value2…] | 从链表尾部添加 |
lrange key start stop | 获取列表指定范围内的元素 |
lpop key | 移出并获取列表的第一个元素 |
rpop key | 移出并获取列表的最后一个元素 |
llen key | 获取列表长度 |
适用场景
结合利用list提供的命令,一般可以应用于商品列表,分页等场景,同样也支持简单的轻量级的消息队列场景。
Set(集合)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 2^32 - 1 。
常用命令
命令 | 含义 |
---|---|
sadd key member1 [member2…] | 向集合中添加元素 |
smembers key | 返回集合中的所有成员 |
sdiff key1 key2 | 两个集合的差集 |
sinter key1 key2 | 两个集合的交集 |
sunion key1 key2 | 两个集合的并集 |
spop key count | 随机从集合中移除并返回count个元素 |
sismember key member | 判断 member 元素是否是集合 key 的成员 |
srandmember key count | 返回集合中一个或多个随机数 |
适用场景
可以应用于一些计算交集、并集、差集,类似于微博好友列表场景、还有一些需要去重列表场景,兴趣爱好等标签场景,随机获取元素场景,随机抽奖,微博点赞等场景。
sorted set(有序集合)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32 - 1。
常用命令
命令 | 含义 |
---|---|
zadd key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
zrange key start stop [WITHSCORES] | 通过索引区间返回有序集合指定区间内的成员 |
zincrby key increment member | 有序集合中对指定成员的分数加上增量 increment |
zrevrange key start stop [WITHSCORES] | 返回有序集中指定区间内的成员,通过索引,分数从高到低 |
zcard key | 获取有序集合的成员数 |
zrem key member [member …] | 移除有序集合中的一个或多个成员 |
zscore key member | 返回有序集中,成员的分数值 |
适用场景
常用于各种排行榜、新闻热榜等等。