2 缓存数据库
[redis]
(HASH)司机sessionid和临时信息映射表
key: online-driver-[sessionid]
(司机临时状态表)
字段 | 字段名 | 值 |
---|---|---|
field | username | "盖伦" |
field | orderid | "orderid-xxxx-xxx-xxx-xxx-xxxx" or "NONE" |
说明
(1) 这个key具有一定的过期时间,当每次访问此key的时候,重新生成过期时间,并且以最后一个访问开始定时。
如果sessionid存在,代表此用户已经登录,如果session不存在,那么就要求用户重新登录。
(2) orderid字段:
如果该司机处于ready状态:
乘客选择该司机,或者web应用服务器自动分配司机给一个用户给该司机,服务器会生成一个订单号,那么orderid会被设置该 唯一订单 号码。 格式如: "orderid-xxxx-xxx-xxx-xxx-xxxx"
否则,该字段被设置为"NONE"
乘客sessionid和临时信息映射表
key: online-user-[sessionid]
(乘客临时状态表)
字段 | 字段名 | 值 |
---|---|---|
field | username | "德莱文" |
field | orderid | "orderid-xxxx-xxx-xxx-xxx-xxxx" or "NONE" |
说明
(1) 这个key具有一定的过期时间,当每次访问此key的时候,重新生成过期时间,并且以最后一个访问开始定时。
如果sessionid存在,代表此用户已经登录,如果session不存在,那么就要求用户重新登录。
(2) orderid字段:
如果乘客已经是waiting状态:
司机已经接单,服务器会生成一个订单号,那么orderid会被设置该 订单 号码。
格式如: "orderid-xxxx-xxx-xxx-xxx-xxxx" 否则,该字段被设置为"NONE"
(HASH)用户详细信息表
####key: OBO_USER_INFO_username
字段 | 字段名 | 值 |
---|---|---|
field | u_name | "盖伦" |
field | tel | "18310332312" |
field | "[email protected]" | |
field | id_card | "210101176616363316" |
field | driver | "yes" |
(HASH)临时订单表
key: orderid-xxxx-xxx-xxx-xxx-xxxx
字段 | 字段名 | 值 |
---|---|---|
field | order_status | "INIT" / "ACTIVE"(创建订单为INIT,当司机确定乘客已上车,更改为ACTIVE) |
field | passenger_sessionid | "online-user-xxxxxxx" |
field | driver_sessionid | "online-driver-xxxxxxx" |
field | create_order_time | "2016-11-28 11:16:00"(订单创建时间) |
field | start_driving_time | "2016-11-28 11:16:00"(真实乘坐起始时间) |
field | end_time | "2016-11-28 12:08:00"(订单终止时间) |
field | src_address | "北京西三旗百汇城"(原定出发地点) |
field | dst_address | "北京西二旗软件园9号楼"(原定终点地址) |
field | src_longitude | 1.0001231 (原定出发点经度) |
field | src_latitude | 1.0001231 (原定出发点纬度) |
field | dst_longitude | 1.0001231 (原定终点经度) |
field | dst_latitude | 1.0001231 (原定终点纬度) |
field | RMB | "32" (预计订单费用) |
field | src_address_real | "北京西三旗百汇城"(实际出发地址) |
field | dst_address_real | "北京西二旗软件园9号楼" (实际终点地址) |
field | src_longitude_real | 1.0001231 (实际出发点经度) |
field | src_latitude_real | 1.0001231 (实际出发点纬度) |
field | dst_longitude_real | 1.0001231 (实际终点经度) |
field | dst_latitude_real | 1.0001231 (实际终点纬度) |
field | RMB_real | "39" (实际订单费用) |
field | ptemp_longitude | 1.0001231 (乘客当前经度) |
field | ptemp_latitude | 1.0001231 (乘客当前纬度) |
field | dtemp_longitude | 1.0001231 (司机当前经度) |
field | dtemp_latitude | 1.0001231 (司机当前唯独) |
说明
ptemp_longitude,ptemp_latitude是当乘客处于waiting状态或者traveling状态,实时将当前坐标更新到此表中,主要供订单中的司机查看。
dtemp_longitude,dtemp_latitude是当司机出于cactching或者driving状态,实时将当前的坐标更新到此表中,主要供订单中的乘客查看。
(GEO-SortSet)ready司机坐标池
key: ONLINE_DRIVER_GEO_ZSET
member: sessionid
score: GEOHASH
如:
member: "online-driver-xxxx-xxx-xxx-xxx-xxxx" score:"3479099956230698"
说明
(1) 如果司机已经开始接单,并且处于就绪状态,那么司机就会每隔一小段时间(2s)向该表中更新自己当前的坐标。
(2) 一切非ready状态的司机,均不会在此表中记录。
如果一个司机已经确定接单,那么司机端应该主动,申请将自己的信息状态从此表中拆掉,确保其他乘客搜索不到自己。
(GEO-SortSet)waiting乘客坐标池
key: ONLINE_USER_GEO_ZSET
member: sessionid
score: GEOHASH
如:
member: "online-user-xxxx-xxx-xxx-xxx-xxxx" score:"3479099956230698"
相关GEOHASH解释 http://blog.jobbole.com/80633/