实现状态消息的发送功能

使用管道的方法实现代码如下:

 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

def create_status(conn, uid, message, *date):
    pipeline = conn.pipeline(True)
    pipeline.hget('user:%s' % uid, 'login')
    pipeline.incr('status🆔') # 对这个键不是很理解

    login, id = pipeline.execute()

    if not login:
        return None
    
    data.update({
        'message': message,
        'posted': time.time()
        'id': id,
        'uid': uid,
        'login': login
    })

    pipeline.hmset('status:%s' % id, data)
    pipeline.hincrby('user:%s' % uid, 'posts')
    pipeline.execute()

    return id

这是《Redis实战》中的一段代码,看这本书的时候我是跳着看的,所以我没有看到这段代码的讲解,我只能以自己的想法理解这段代码:

  1. 当这个方法被调用的时候,先判断用户是否处于登录状态,如果不是,则返回
  2. 如果用户登录了,则创建一个状态信息,存储到status:uid的键上
  3. 最后再更新一下用户posts字段

这个方法的作用叫做发送状态消息,所以我猜测是存在一个逻辑,扫描status:uid,然后作为某个用户的状态信息的。