开发者社区> 科技探索者> 正文

Redis实现微博后台业务逻辑系列(七)

简介:
+关注继续查看

微博点赞功能的实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import redis
 
class LikeMessage(object):
    """实现微博点赞功能"""
    def __init__(self, msg_id, client):
        self.msg_id = msg_id
        self.client = client
        self.key = "weibo::message::" + str(msg_id) + "::like"
         
    def like(self, user_id):
        """对该微博点赞"""
        self.client.sadd(self.key, user_id)
         
    def is_liking(self, user_id):
        """检查用户是否赞了该微博"""
        return self.client.sismember(self.key, user_id)
         
    def undo(self, user_id):
        """取消点赞"""
        self.client.srem(self.key, user_id)
         
    def count(self):
        """获取该微博点赞人数"""
        return self.client.scard(self.key)
         
    def get_all_liking_user(self):
        """返回赞了该微博的所有用户"""
        if not self.client.exists(self.key):
            return False
        else:
            return self.client.smembers(self.key)
             
             
if __name__ == "__main__":
    redis_client = redis.StrictRedis()
    vote = LikeMessage(65535, redis_client)
    vote.like(10010)
    vote.like(10086)
    vote.like(10000)
    print(vote.count())
    print(vote.is_liking(10086))
    vote.undo(10086)
    print(vote.get_all_liking_user())

    在这里我们使用无序集合键来保存对微博的点赞信息,我们在之前的文章已经用无序集合键实现了保存微博用户之间的关系,无序集合键还可以实现例如书籍的标签信息,个人标签等。只要是不在乎数据存储的顺序,并且数据必须是唯一的,都可以用无序集合键来实现功能。对于每条微博,redis都会创建一个"weibo::message::<id>::like"的无序集合键来存储对该微博点赞的用户。

本文转自戴柏阳的博客博客51CTO博客,原文链接http://blog.51cto.com/daibaiyang119/1963055如需转载请自行联系原作者


daibaiyang119

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis学习4:List数据类型、拓展操作、实现日志等
注意点:对存储空间的顺序进行分析!
36 0
Redis学习3:hash类型操作、拓展操作、实现购物等
首先可以理解成一个redis里面有一个小的redis。同时要注意引入了一个field的名字。
40 0
2021年你还不会Shiro?----10.使用redis实现Shiro的缓存
上一篇文章已经总结了使用ehCache来实现Shiro的缓存管理,步骤也很简单,引入依赖后,直接开启Realm的缓存管理器即可。如果使用Redis来实现缓存管理其实也是一样的,我们也是需要引入redis的依赖,然后开启缓存传入自定义的redis的缓存管理器就行。区别是我们需要为自定义的redis缓存管理器提供自定义的缓存管理类。这个缓存管理类中需要使用到redisTemplate模板,这个模板我们也是需要自己定义。
121 0
Linux系统Redis安装教程-附带后台启动
Linux系统Redis安装教程-附带后台启动
109 0
基于SpringBoot+Redis+Vue的后台管理系统开源项目,附源码地址
项目名称 eladmin (权限管理系统) 简介 eladmin 是一款基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue 的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由。
230 0
Hyperf结合Redis异步队列任务async-queue实现后台操作日志写入
Hyperf结合Redis异步队列任务async-queue实现后台操作日志写入
202 0
+关注
科技探索者
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
Redis Cluster的基本原理
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载