上一章对Redis的5种数据结构有了基本的了解之后,下面来学习下怎样使用这些结构来解决实际问题。下面用Redis构建一个简单的文章投票网站的后端来演示,代码示例依然使用Springboot,给出GitHub地址
Redis配置
|
|
数据格式存储
采用散列的数据格式来存储文章,格式如下:
- key
- article:××××××
- hash value
- subKey : title | subValue : ××××××
- subKey : link | subValue : ××××××
- subKey : poster | subValue : ××××××
- subKey : time | subValue : ××××××
- subKey : votes | subValue : ××××××
采用两个有序的集合来有序地存储文章:第一个有序集合的成员为文章ID,分值为文章的发布时间;第二个有序集合的成员同样为文章ID,而分值则为文章的评分。数据格式如下:
- key
- time:
- zset value
- member : article:×××××× | score : ××××××
- key
- score:
- zset value
- member : article:×××××× | score : ××××××
采用集合来为每篇文章记存储一个已投票的用户名单,数据格式如下:
- key
- vote:××××××
- set value
- ××××××
核心代码如下:
注:上述opsForSet().add、opsForZSet().incrementScore、opsForHash().increment应该在同一个事物中,后面再讲Redis的事物,暂时先就这样
取出评分最高以及最新发布的文章
|
|
对文章进行分组
采用一个集合来存储同一组的文章
按组查询文章
本章实践了下几种数据结构的用法,对redisTemplate还不太熟悉,有待进一步研究。