如果有人能帮助我就太好了。我正在尝试在我的 cakephp 框架项目中实现 Radis 缓存。
在我的项目中有一个模块,它的数据经常与 mysql 查询更新和选择一起使用。所以我计划将模块数据保存在 radis 缓存中。
以下是我想保留在缓存中的对象的架构
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`owner_id` int(11) NOT NULL,
`group_id` int(11) NOT NULL,
`is_login` smallint(1) NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0=>on walk,1=>on run',
`manual_busy` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'used when user mark himself busy',
`is_idle` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'keep record if user moving or not',
`lat` varchar(20) NOT NULL COMMENT 'where the user is at present',
`lng` varchar(20) NOT NULL
保存这些类型的对象后,我想根据“status=1”、“owner_id=2”和“manual_busy=0”等条件搜索最近的用户
为了最近的用户比较,我将使用地理经纬度。
我查看了 Radis 文档,发现了一些地理函数 https://redis.io/commands/georadius 但 georadius 命令不适用于 HMSET 键。
如果有人使用相同的功能,请提出解决方案。
谢谢
请您参考如下方法:
一个选项是使用 GEOADD 命令创建一组排序的用户位置,然后不将纬度/经度存储在用户对象中,而是存储将用户位置添加到地理集中时使用的键。
比如
GEOADD Locations 41.8883 -87.6323 "User1"
HMSET userhashkey geokey "User1"
然后,一旦您获得了要在地理上搜索的用户列表,就可以将 geokey 字段中的值与 GEORADIUS 命令的结果进行比较。
我希望这是有道理的。