Redis绘出访客的地图(redis 访客地图)

图片

Redis作为一种快速的键值数据库,在网站中应用广泛,不论是缓存还是统计,都非常好用。本文将介绍如何使用Redis实现对网站访客的地图绘制功能,以及通过PHP代码实现此功能。

在服务器安装Redis,如果你的服务器已经安装了,可以跳过此步骤。Redis主要用于存储访客的IP地址,因此打开Redis的配置文件,将maxmemory设置为存储所需的内存数量(一般设置为256MB),因为IP地址不会变化,所以可以设置maxmemory-policy为allkeys-lru。

接下来,需要在网页上添加一段JS代码,以便获取访客的IP地址:

$(function(){

$.get(‘http://ip-api.com/json/?fields=status,message,continent,country,regionName,city,zip,lat,lon,timezone,isp’,function(ipInfo){

if(‘success’ === data.status){

/*setting redis*/

var info = {

“continent”: data.continent,

“country”: data.country,

“regionName”: data.regionName,

“city”: data.city,

“zip”: data.zip,

“lat”: data.lat,

“lon”: data.lon,

“timezone”: data.timeZone,

“isp”: data.isp

}

//发送请求给Redis,将访客IP地址以及对应的地理信息写入Redis

$.post(‘/php/saveGeoInfo.php’,info,function(res){

});

}

});

});

接下来我们就可以写PHP处理Redis访客数据的代码了,PHP代码使用了Predis组件,我们可以通过以下代码将Redis中的数据收集起来:

use Predis\Client;

$client = new Client([

‘scheme’ = ‘tcp’

‘host’ = ”

‘port’ = 6379

]);

//获取Redis中IP地址和地理位置信息

$geoInfo = $client->hgetall(‘geo_info’);

$data = array();

//循环处理获取的数据,将访客的位置存入数组

foreach($geoInfo as $key => $value){

$geoData = json_decode($value);

$data[$geoData->lat][$geoData->lon][] = $geoData;

}

header(‘Content-Type: application/json’);

echo json_encode($data);

//输出JSON数据,可以使用百度地图API将获取的数据绘制成图片

?>

可以使用百度地图API来绘制访客位置图,网上有很多开源API可以使用,这里我们以百度地图为例:

$( function () {

// 使用JQuery从服务器获取访客的位置

$.get( ‘/php/geoJson.php’, function ( geojson ) {

//获取到的JSON数据,转换成GeoJson格式的数据:

var geoDataSet = {“type”: “FeatureCollection”,”features”: [] };

$.each( geojson, function ( lat, lon ) {

$.each( lon, function ( key, value ) {

geoDataSet.features.push({

“type”:”Feature”,

“properties”:{“name”:value[0].country+value[0].regionName+value[0].city},

“geometry”:{

“type”:”Point”,

“coordinates”:[value[0].lon,value[0].lat]

}

});

});

});

var map = new BMap.Map(“contner”);

map.centerAndZoom(new BMap.Point(104.067, 30.633), 5);

//创建LBS搜索实例

var localSearch = new BMap.LocalSearch(map);

//向地图添加LBS实例

var lbsLayer = new BMap.GeoJSON(geoDataSet);

lbsLayer.addTo(map);

//添加比例尺控件

var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});

var top_left_navigation = new BMap.NavigationControl();

});

});

通过以上代码,我们就能在网页上成功的绘出服务器上的访客位置地图图片。

使用Redis储存用户的IP地址,再配合JS和PHP,结合百度地图API,就可以很轻易地实现绘制网站访客地图图片的功能。


数据运维技术 » Redis绘出访客的地图(redis 访客地图)