Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
基于此可以实现附近的人,附近的店铺等功能
代码语言:javascript复制$redis = new Redis();
$redis->connect("docker-redis", 6379);
//$r=$redis->geoadd('citys', 114.09981,33.585519, 'taiwei');
//$r=$redis->geoadd('citys', 114.070524,33.59067, 'dongwaitan');
//$r=$redis->geoadd('citys', 113.971066,33.577242, 'luohexi');
//两个成员之间的距离
//$r=$redis->geodist('citys', 'taiwei', 'luohexi', 'km');
//$r=$redis->geodist('citys', 'taiwei', 'dongwaitan', 'm');
//$r=$redis->geopos('citys', 'taiwei');
$r=$redis->geohash('citys', 'luohexi');
//$r=$redis->georadiusbymember('citys', 'taiwei', 500, 'km');
//$r = $redis->georadius('citys', 114.09981, 33.585519, '500', 'km', [
// 'count' => 10,
//// 'store'=>'citys2',
// 'storedist'=>'citys3',
// 'desc',
//// 'WITHCOORD',
//// 'WITHDIST',
//// 'WITHHASH'
//]);
//var_dump($redis->rawCommand('georadius', 'citys', '114', '30', '100', 'km', 'ASC'));
//删除成员
//$r=$redis->zRem('citys', 'taiwei');
var_dump($r);
有序集合
代码语言:javascript复制$redis = new Redis();
$redis->connect("docker-redis", 6379);
//$ok=$redis->zAdd('list', -1, 'a', -2, 'b', -3, 'c',0, 'd', 1, 'e', 2, 'f', 3, 'g');
//var_dump($ok);exit;
//$ok=$redis->zAdd('list2', -1, 'a', -2, 'b', -3, 'c');
//var_dump($ok);exit;
//$list=$redis->zRange('list', 1, 3);//分数升序,取索引1~3之间的值。b,a,d
//$list=$redis->zRange('list', 0, -1, ['withscores'=>true]);//分数升序,取全部
//$list=$redis->zRevRange('list', 1, 3);//分数降序,取索引1~3之间的值。f,e,d
//$list=$redis->zRevRange('list', 0, -1);//分数降序,取全部
//$list=$redis->zrangebyscore('list', 0, 3);//分数范围内的成员,分数从低到高排序,['d', 'e', 'f', 'g']
//$list=$redis->zRevRangeByScore('list', 3, 0);//分数范围内的成员,分数从高到低排序,['g','f', 'e', 'd']
$list=$redis->zRangeByLex('list', '-', ' ');//获取全部成员
//$score=$redis->zScore('list', 'g');//取分数,3
//$count=$redis->zCount('list', -1, 1);//分数范围内的总数,start<end,3(['a', 'd', 'e'])
//$count=$redis->zCard('list');//成员总数
//var_dump($count);exit;
//$r=$redis->zRem('list', 'a');//删除a
//$r=$redis->zIncrBy('list', 10, 'g');//增加分数,一次加10,可以统计接口的访问此时
//$rank=$redis->zRank('list', 'd');//分数升序,获取某个key的排名,排名从0开始
//$rank=$redis->zRevRank('list', 'd');//分数降序,获取某个key的排名,排名从0开始
//var_dump($rank);exit;
//求交集
//$ok=$redis->zInterStore('list-list2', ['list', 'list2'], [1, 1], 'MIN');
//并集
//$ok=$redis->zUnionStore('aaa', ['list', 'list2'], [1, 1], 'MIN');
//var_dump($ok);exit;
//$ok=$redis->zRemRangeByScore('list', -3, 0);//删除 分数范围内的成员
//$ok=$redis->zRemRangeByRank('list', 0, 1);//下标参数start和stop都以0为底,0处是分数最小的那个元素。这些索引也可是负数,表示位移从最高分处开始数。例如,-1是分数最高的元素,-2是分数第二高的,依次类推。
//var_dump($ok);exit;
var_dump($list);