使用复述,记录用户在线状态

哈希表(HashTable)是一种数据结构,它实现了“键-值”(键值)的映射。根据键就能快速找到价值,并且,无论有多少个键值对,查询时间始终不变.Python的字典就是基于哈希表实现的。
在复述中也有一个数据结构叫作哈希表。
在复述中,使用哈希表可以保存大量数据,且无论有多少数据,查询时间始终保持不变。
复述的一个哈希表里面可以储存2的32次方减1(约等于43亿)个键值对。


现在,一些论坛网站能够显示用户当前是在线状态还是离线状态。那这个功能是怎么实现的呢?其中一种实现方法就是基于复述来实现

程序的逻辑非常简单,包括以下几个步骤:
(1)。用户登录时,在复述中添加一个字符串,主要为用户账号,值为1。
(2)。用户退出网站时,从复述中删除账号名对应的关键。
(3)。查询时,程序尝试从复述中获取用户账号对应的字符串:如果值为1,则表示:“在线”,如果值为None,则表示“不在线”。


如果有1000个用户同时在线,则复述,列出所有钥匙后的结果如图:

使用复述,记录用户在线状态

现在,网站又加入了一个积分机制。每个用户都有一个积分数据,由于这个数据需要经常查询和修改,因此也使用复述来保存

那问题来了,在线信息使用用户账号作为关键,积分信息也使用账号作为关键,这不就冲突了吗?
于是有人给不同的关键加上了后缀,例如,记录用户是否在线,使用的键为“账号:在线”。如果用户账号为10032,那他的在线状态关键就是“10032:在线”。记录用户积分的关键为“账号:分数”,例如用户10032对应的积分主要为“10032:分数”

注意:在复述中,中关键的冒号就是普通的字符,用来分割前缀和后缀,没有什么特殊意义。写成“10032 _online”或者“10032 -分数”效果完全一样

使用散列存储的代码示例:

使用复述,记录用户在线状态”> <br/> </p> <p> <img src=

?第12行代码:向复述,中名为user_online_status的哈希表中添加一个字段,字段名为用户账号,值为l。如果不存在名为user_online_status的哈希表,则自动创建一个。
?第21行代码:从复述,中名为用户alt="使用复述,记录用户在线状态">

<强>使用晗希表不仅可以减少复述的个数,还能优化储存空间r是官方就特别说明,哈希表对存储结构进行过特殊的优化,储存相同的内容,占用的内存比字符串要小很多。

使用复述,记录用户在线状态