python-redis的使用

安裝 :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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容