String

命令

  1. # 设置指定key的值
  2. set key value
  3. # 获取指定key的值
  4. get key
  5. # 只有在key不存在时设置key的值
  6. setnx key value
  7. # 将值value关联到key, 并将key的过期时间设为seconds(以秒为单位)
  8. setex key seconds value

场景

简单的key-value类型,value不仅可以是string,也可以是数字。
常规计数:微博数,粉丝数。

Hash

命令

  1. # 将哈希表key中的字段field的值设为value
  2. hset key field value
  3. # 获取存储在哈希表中指定字段的值
  4. hget key field
  5. # 删除一个或多个哈希表字段
  6. hdel key field1 [field2]

场景

hash特别适合用于存储对象,后续的操作中,可以直接仅仅修改这个对象中的某个字段的值。
比如可以hash数据结构来存储用户信息,商品信息等。

List

命令

  1. # 将一个或多个值插入到列表头部
  2. lpush key value1 [value2]
  3. # 在列表中添加一个或多个值
  4. rpush key value1 [value2]
  5. # 移除并获取列表中的第一个元素
  6. lpop key
  7. # 移除列表的最后一个元素,返回被移除的元素
  8. rpop key

场景

微博的关注列表,粉丝列表。
可以基于redis实现简单的高性能分页,类似微博那种下拉不断分页的东西,性能高。

Set

命令

场景

存储不重复的列表数据。可以基于set实现交集,并集,差集操作。
比如:微博应用,可以将一个用户所有关注人存在一个集合中,将所有的粉丝存在一个集合。redis可以非常方便的实现如同共同关注,共同粉丝,共同喜好的功能。

  1. #-------操作多个set-------
  2. # key1,key2的交集,将结果存在key1
  3. sinter key1 key2
  4. # key1,key2的交集, 将交集存在result
  5. sinterstore result key1 key2
  6. # key1,key2的差集,将结果存在key1
  7. sdiff key1 key2
  8. # key1, key2的差集,将结果存在result
  9. sdiffstore result key1 key2
  10. # 返回所有集合的并集
  11. sunion key1 key2
  12. # 所有给定集合的并集存储在result集合中
  13. sunionstore result key1 key2
  14. #-------操作一个set-------
  15. # 添加元素
  16. sadd mySet 1
  17. # 查看全部元素
  18. smembers mySet
  19. # 判断是否包含某个值
  20. sismember mySet 3
  21. # 删除某个/些元素
  22. srem mySet 1
  23. srem mySet 2 4
  24. # 查看元素个数
  25. scard mySet
  26. # 随机删除一个元素
  27. spop mySet

Sorted Set

命令

  1. # 向有序集合添加一个或多个成员,或者更新已存在成员的分数
  2. zadd key score1 member1 [score2 member2]
  3. #返回指定key内指定范围内的集合区间,withscores同时返回score权重参数(正序)
  4. zrange key start stop [withscores]
  5. # 返回有序集合中指定区间的成员,通过索引,分数从高到低 (降序)
  6. zrevrange key start stop [withscores]
  7. # 返回有序集合中指定区间内的成员,通过score,分数从高到低 (降序)
  8. zrevrangebyscore key maxScore minScore [withscores]
  9. # 移除有序集合中的一个或多个成员
  10. zrem key member [member...]
  11. # 获取有序集合的成员数
  12. zcard key
  13. # 获取指定值的排名
  14. zrank key member

场景

相比于set,sort set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。
比如:直播系统,试试排行信息包含直播间在线用户列表,礼物排行榜,弹幕消息等消息,适合使用redis中的sort set结构进行存储。