def fsync_msg(channel_ids): ''' 把redis中的信息同步到数据库中, 把channel_$id_msgs值写入到数据库 ''' for i in channel_ids: key = id2channel_msg_key(channel_id) msg = r_db.lrange(key, 0, -1) msg = (config.LINE_SPLIT).join(msg) create_msg(id, msg) r_db.delete(key)
def get_bcast(nickname, is_del=True): '''获自己获得的广播内容''' mem_key = nickname2mem_key(nickname) if is_del: msg = r_db.lpop(mem_key) else: msg = r_db.lrange(mem_Key, 0, -1) if not msg: return [] else: return msg
def put_msg(channel_id, line): ''' 把line一句话记录给channel_id, 先记录在redis中,当达到MAX_LINE行是记录到数据库中, 需要注意下面的fsync_msg的使用 ''' key = id2channel_msg_key(channel_id) print '-------------', key, line r_db.lpush(key, line) if r_db.llen(key) >= config.MAX_LINE: msg = r_db.lrange(key, 0, -1) msg = (config.LINE_SPLIT).join(msg) create_msg(id, msg) r_db.delete(key)