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"])

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.Homestead 下安装redis 按顺序执行如下命令 sudo apt-get update su...
    CaptainRoy阅读 7,876评论 0 1
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 8,144评论 1 3
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,120评论 0 10
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 12,063评论 0 34
  • 据说,人与动物的区别之一就是,人得工作。而动物是不需要的,它们只需在饿的时候去吃草、捕猎,获...
    剑笑阅读 1,397评论 0 0