Redis常用命令集:
二、业务剖析
在这三个数据中点赞评论网站,阅读量和用户没有关系不用储存用户和文章的关系,并且收藏和点赞和用户就是有关的,每位用户对同一篇文章只能收藏一次和点赞一次,而且可以取消,是有状态的数据,针对这两种不同类型的业务选择的数据结构也不同,实现方式也有好多种这儿剖析其中几个。
三、Redis数据结构选择剖析和实现
这儿不会过多剖析数据库相关方面设计,重点剖析Redis中应当怎样储存那些数据可以高效使用,阅读量是一个持续自增的值和其它业务无关,在数据表中用一个数组记录即可,并且收藏和点赞须要一个对应业务和用户的关联表来记录关系,每次查询时都要查询关联表统计出文章被多少用户收藏和点赞,还要判定当前查看文章的用户是否有收藏和点赞,其实数目信息我们也可以储存某个记录表中,而且每次查询都打到数据库压力还是挺大的,数据库资源很宝贵点赞评论网站,这种信息统计好后储存在缓存中会是一个不错的选择。
3.1、三个数据缓存都分别使用字符串结构计数器储存对应数目值
鉴于前面所说,这儿我们将阅读量、收藏、点赞数目使用三个字符串结构储存,不同业务操作对应key即可,还要注意那些数据入数据库操作。
2、代码实现
这儿直接使用计数器操作即可,每次有对应操作只要对具体key做自增或则自减即可,假定文章id=1
## 文章每次被阅读,文章阅读量自增1
127.0.0.1:6379> incr article:readcount:1
## 文章每次被收藏,文章收藏数量自增1
127.0.0.1:6379> incr article:collectcount:1
## 文章每次被点赞,文章点赞数量自增1
127.0.0.1:6379> incr article:likecount:1
## 文章每次被取消收藏,文章收藏数量自减1
127.0.0.1:6379> decr article:collectcount:1
## 文章每次被取消点赞,文章点赞数量自减1
127.0.0.1:6379> decr article:likecount:1
## 获取文章阅读量、收藏、点赞数量
127.0.0.1:6379> get article:readcount:1
127.0.0.1:6379> get article:collectcount:1
127.0.0.1:6379> get article:likecount:1
3、优点
4、不足点
3.2、三个数据缓存使用一个Hash结构储存
针对3.1中由于须要使用特别多的key,一篇文章就要使用三个key,但是每次查看文章都须要恳求Redis三次就能获取到这三个数目值,对Redis资源开支比较大,这儿可以使用Hash结构优化。
2、代码实现
这儿直接Hash结构操作即可,每次有对应操作只要对具体Hash结构中的key做自增或则自减即可,假定文章id=1
## 文章每次被阅读,文章阅读量自增1
127.0.0.1:6379> hincrby article:count:1 readcount 1
## 文章每次被收藏,文章收藏数量自增1
127.0.0.1:6379> hincrby article:count:1 collectcount 1
## 文章每次被点赞,文章点赞数量自增1
127.0.0.1:6379> hincrby article:count:1 likecount 1
## 文章每次被取消收藏,文章收藏数量自减1
127.0.0.1:6379> hincrby article:count:1 collectcount -1
## 文章每次被取消点赞,文章点赞数量自减1
127.0.0.1:6379> hincrby article:count:1 likecount -1
## 获取文章阅读量、收藏、点赞数量
127.0.0.1:6379> hgetall article:count:1
3、优点
4、不足点