1
我想在redis數據庫中存儲用戶位置(long,lat)。在我最初的想法中,鍵將是用戶ID。我需要2個功能:設置位置,獲取所有位置。我應該如何執行它,或者應該將其存儲到哪個結構中以便於快速訪問。Redis商店位置的用戶策略
我想在redis數據庫中存儲用戶位置(long,lat)。在我最初的想法中,鍵將是用戶ID。我需要2個功能:設置位置,獲取所有位置。我應該如何執行它,或者應該將其存儲到哪個結構中以便於快速訪問。Redis商店位置的用戶策略
貌似SETS
是一個不錯的主意(如果需要位置的獨特性):
PHP樣本
$location = json_encode(array('long' => '...', 'lat' => '...'));
$redis->sAdd('locations:' . $userId, $location);
...
$redis->sAdd('locations:' . $userId, $location2);
...
$redis->sAdd('locations:' . $userId, $location2);
...
$userLocations = $redis->sMembers('locations:' . $userId);
你不說這個,但如果不需要的位置獨特的LISTS
將是最好的choise:
PHP樣本
$location = json_encode(array('long' => '...', 'lat' => '...'));
$redis->rPush('locations:' . $userId, $location);
...
$redis->rPush('locations:' . $userId, $location2);
...
$redis->rPush('locations:' . $userId, $location2);
...
$userLocations = $redis->lRange('locations:' . $userId, 0, -1);
如果用戶只有一個位置HASH
將是最好的choise:
locations
HSET
其中field是你的userId和值是序列化數據PHP樣本
$location = json_encode(array('long' => '...', 'lat' => '...'));
$redis->hSet('locations', $userId, $location);
...
$userLocation = json_decode($redis->hGet('locations', $userId));
我有很多的用戶每個人都有它自己的ID和長緯度。我可以序列化我的用戶的json對象並將其存儲在redis集中嗎? –
如何將其存儲爲地圖,ID => JSON對象? –
每個用戶只能有一個位置或多個位置? – misterion