我必须在PHP中创建一个应用程序来存储不同用户的手机联系人。
用于存储电话号码的表格格式如下:
id,user-id,phone-number
每当用户尝试查看他的所有联系人时,首先应显示缓存中的所有内容,然后显示数据库中的其余内容。
在实施中,我遇到以下问题:
如何将电话号码存储在缓存中?通过这个我的意思是什么应该是将电话号码插入内存缓存的关键,以便我可以轻松地从任何用户提取数据。请记住,每个用户可以拥有许多电话号码,并且有很多用户。
答案 0 :(得分:1)
密钥应该使用用户ID
user id { mobile number ... + list of contact ...[which is the user id]}
// by accessing this key able to get all mobile number
// and his contact list
建议值应尽可能简单,
没有JSON,没有序列化数据
user id {m:xxx,xxxx..., c:yyy,yyy,yyy}
这是为了节省空间并节省json_decode / unserailize
获取用户的所有联系人
1. fetch cache using user id (one call)
2. iterate the list of contact
3. fetch parellel of all the contact (user) key * function handling
4. iterate to build a multi dimensional array
当用户添加/更新/删除手机号码时,
或添加/更新/删除手机号码
1. fetch cache using user id (one call)
2. expire the key using user id
3. iterate the cache result
你的功能应该是如果memcache中不存在缓存,
从数据库中取出,
设置memcache,
返回数据库结果
答案 1 :(得分:0)
缓存密钥格式应为
12_contacts
其中12是用户ID。
在密钥内部,您可以将该用户的完整联系人列表存储为数组。通常这意味着无论何时用户联系人更改,您都可以清除或重建memcache密钥。你需要将完整的联系人列表存储在密钥中作为一个数组,存储一个部分列表,然后查询任何其他列表就会失败。