python-redis的使用

2017-06-19  本文已影响176人  真是明明

安装 :pip install redis

#coding=utf-8
#导入
import redis
#隐式链接
r = redis.StrictRedis()
#显式链接
# r = redis.StrictRedis(host='127.0.0.1',port=6379,db=0)
#get 和set设置 
r.set('color','red')
r.get('color')
#HMSET  和 HGETALL 使用
r.hmset('dict',{'name':'anaf'})
people = r.hgetall('dict')
print people   #显示出字典{'name':'anaf'}
#管道的使用方式和事务相同,但是创建的时候需要加上参数transaction=False
pipe = r.pipeline(transaction=False)
#事务和管道还支持链式调用
result = r.pipeline().set('color','red'),.get('color').execute()

在线好友

online_user.py

#coding=utf-8
'''
实现在线用户的统计  源自http://flask.pocoo.org/snippets/71/
只是显示了统计ip   并没有显示个数  还没有count个数
time:2017-06-19
author:anaf
'''
from app import redis_store
from datetime import datetime
import time
from flask import current_app


def mark_online(user_id):
    now = int(time.time())
    expires = now + (current_app.config['ONLINE_LAST_MINUTES'] * 60) + 10
    all_users_key = 'online-users/%d' % (now // 60)
    user_key = 'user-activity/%s' % user_id
    p = redis_store.pipeline()
    p.sadd(all_users_key, user_id)
    p.set(user_key, now)
    p.expireat(all_users_key, expires)
    p.expireat(user_key, expires)
    p.execute()


def get_user_last_activity(user_id):
    last_active = redis_store.get('user-activity/%s' % user_id)
    if last_active is None:
        return None
    return datetime.utcfromtimestamp(int(last_active))

def get_online_users():
    current = int(time.time()) // 60
    minutes = xrange(current_app.config['ONLINE_LAST_MINUTES'])
    return redis_store.sunion(['online-users/%d' % (current - x) for x in minutes])

main.py

@main.route('/online')
def online():
    return Response('Online: %s' % ', '.join(get_online_users()),mimetype='text/plain')


效果:Online: 192.168.2.17, 127.0.0.1

上一篇下一篇

猜你喜欢

热点阅读