玖叶教程网

前端编程开发入门

深入探讨 Redis 常见数据结构以及使用场景分析 值得收藏!

有玩过redis的朋友可能对下面内容会比较熟悉,下面主要分享下redis 常见数据结构(String、Hash、List、Set、Sorted Set)以及使用场景分析:




String

常用命令:set、get、decr、incr、mget 等。

String 数据结构是简单的 Key-Value 类型,Value 其实不仅可以是 String,也可以是数字。常规 Key-Value 缓存应用;常规计数:微博数,粉丝数等。

Hash

常用命令: hget、hset、hgetall 等。

Hash 是一个 String 类型的 Field 和 Value 的映射表,Hash 特别适合用于存储对象。

后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。

例如我们通过 Hash 数据结构来存储用户信息,商品信息等等。下面我就用 Hash 类型存放了我的一些信息:

key=HWB 
value={ 
 “id”: 1, 
 “name”: “huangweibo”, 
 “age”: 26, 
 “location”: “Guangzhou, tianhe” 
} 

List

常用命令:lpush、rpush、lpop、rpop、lrange 等。

List 就是链表,Redis List 的应用场景非常多,也是 Redis 最重要的数据结构之一。

比如微博的关注列表,粉丝列表,消息列表等功能都可以用 Redis 的 List 结构来实现。

Redis List 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。

另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 List 实现分页查询。

基于 Redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能很高,大家有空可以测试下。

Set

常用命令:sadd、spop、smembers、sunion 等。

Set 对外提供的功能与 List 类似是一个列表的功能,特殊之处在于 Set 是可以自动排重的。

当你需要存储一个列表数据,又不希望出现重复数据时,Set 是一个很好的选择。

并且 Set 提供了判断某个成员是否在一个 Set 集合内的重要接口,这个也是 List 所不能提供的。你可以基于 Set 轻易实现交集、并集、差集的操作。

比如:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。

这个过程也就是求交集的过程,具体命令如下:

sinterstore key1 key2 key3 将交集存在key1内 


Sorted Set

常用命令:zadd、zrange、zrem、zcard 等。

和 Set 相比,Sorted Set 增加了一个权重参数 Score,使得集合中的元素能够按 Score 进行有序排列。

例如在斗鱼直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 Sorted Set 结构进行存储。


后面会分享更多底层的内容,路过的朋友感兴趣可以点下关注哦!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言