redis简单使用


title: redis简单使用
date: 2018-03-07 13:57:10
tags: [python,redis,序列化]


需求

现在在开发应用审计系统的原型,功能就是旁路的方式对http协议进行还原、审计。除了提取基本的http头信息外,还要对负载进行还原存储。当网络流量较大时,如何能快速存储,并且支持跨进程搜索就成了问题。

方案

了解了内存数据库之后,决定采用redis作为中间件缓存最新的数据,并定时归档到mongodb的方案。

例子

存储

这里使用了python的redis库操作数据库。
使用http请求头的第一行内容作为key,将还原出的http对象经过cPickle序列化后存储进去。

import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379,db=1)
r = redis.Redis(connection_pool=pool)

#存对象
HTTP_COM.__module__ = "common"
data = cPickle.dumps(self)
r.hmset(self.request.first_line.split(" ")[1],{"data":data})

查询

import redis
pool = redis.ConnectionPool(host='192.168.1.101', port=6379,db=1)
r = redis.Redis(connection_pool=pool)
data = r.hgetall("/zxpic_imtt/2018/03/07/1600/originalimage/160156_2551183010_5_700_275.jpg")
#取出对象
from common import TCPSTREAM,TCPSTREAM_POOL,HTTP_POOL,TCP_POOL,HTTPRequest,HTTPResponse,HTTP_COM
import cPickle
obj=cPickle.loads(data["data"])

你可能感兴趣的:(redis简单使用)