Redis是一个Key/Value结构的存储系统,可以最终把数据持久化到硬盘上。在项目中,可以用它做一些小功能的数据存储部分,取代json文件、Xml文件等。
可以用一个key标识一个队列,进行入队和出队操作。
lpush(key,value)---------------将value放入key标识的队列
lpop(key)---------------------从key标识的队列中pop出一个值
lgetrange(key,0,-1)-------------取出key标识的队列中的所有值
如果希望使用php操作redis,要保证两点。1.机器上装有redis,并且将redis-server运行起来。2.php打开php_redis扩展
示例程序如下:
<?php
class RedisTest{
function __construct(){
$this->keyName = "newAsset";
$this->host = "127.0.0.1";
$this->port = 6379;
}
function insertRedis($json){
$redis = new Redis();
$redis->connect($this->host,$this->port);
$redis->lpush($this->keyName,$json);
}
function getFromRedis(){
$redis = new Redis();
$redis->connect($this->host,$this->port);
$arr = $redis->lgetrange($this->keyName,0,-1);
for($i=0;$i<count($arr);$i++){
$arr[$i] = json_decode($arr[$i]);
echo $i.':';
echo $arr[$i]->id.','.$arr[$i]->src_ip.','.$arr[$i]->dst_ip.','.$arr[$i]->port;
echo "\n";
}
}
}
$redisTest = new RedisTest();
$json = array('{"id":"1","src_ip":"1.1.1.1","dst_ip":"any","port":"8080"}',
'{"id":"2","src_ip":"1.1.1.1","dst_ip":"any","port":"8080"}');
foreach($json as $item){
$redisTest->insertRedis($item);
}
echo "done";
$redisTest->getFromRedis();
?>
与上面的代码有异曲同工之妙的python代码如下:
#encoding=utf-8
import redis
import json
class RedisTest(object):
def __init__(self):
self.keyName = 'newAsset'
self.host = '127.0.0.1'
self.port = 6379
self.re = redis.Redis(host=self.host,port=self.port)
def insertRedis(self,jsonStr):
self.re.lpush(self.keyName,jsonStr)
def getFromRedis(self):
arr = self.re.lrange(self.keyName,0,-1)
for i in range(0,len(arr)):
arr[i] = json.loads(arr[i])
print arr[i]['id'],arr[i]['src_ip'],arr[i]['dst_ip'],arr[i]['port'],'\n'
if __name__=='__main__':
redisTest = RedisTest()
# json = ['{"id":"1","src_ip":"1.1.1.1","dst_ip":"any","port":"8080"}','{"id":"2","src_ip":"1.1.1.1","dst_ip":"any","port":"8080"}']
# for item in json:
# redisTest.insertRedis(item)
# print 'done!\n'
redisTest.getFromRedis()