我对 redis 很陌生。 所以我想要的是存储从数据库中检索到的数据。 现在我必须对数据库返回的每个键值对使用 client.set() 还是有其他方法可以用一个命令保存所有数据? 数据格式如下:
<br i="6"/>
{<br i="7"/>
"member_username": "nikhil567",<br i="8"/>
"member_gender": "Male",<br i="9"/>
"member_dob": 0,<br i="10"/>
"member_country": "",<br i="11"/>
}<br i="12"/>
@stockholmux我的数据存储在变量成员中。 那我该怎么办呢?
var member={member_name:'svf',address:'cvbjnk'}
你能给我示例查询吗?
正确的方法是散列的,如上所述,平的,也解释过。 虽然那个库模块对我来说是新的。
有一个快捷方式,通常是不赞成的(tldr 会使以后分析数据的爬行速度变慢),但有时可能是合适的:JSON.stringify 您的对象并将其作为字符串存储在普通键中。
member_string = JSON.stringify member
redis_client.set 'your_key', member_string
# something like that
# if your object is already flat then you can (just):
redis_client.hmset 'hash_key', member
# something like that, been awhile
@abhinav76这实际上取决于您访问数据的方式,但您可能希望通过member_name
,对吗? 所以,把它拉进钥匙。
var member={member_name:'svf',address:'cvbjnk'};
client.hmset('members:'+member.member_name, member, function(err) { ... });
稍后,如果您想获得该哈希值以及您需要执行的所有字段:
client.hgetall('members:svf', function(err,values) { ... });
您可能还想查看某种二级商店来跟踪您的所有member:*
哈希值 - 类似于 redis 集或列表
感谢@kulicuu和@stockholmux 。
我的 redis 数据如下所示:
现在如何更新此数据中的任何字段?
@kulicuu @stockholmux
<br i="10"/>
"{\"f_name\":\"\",\"profile\":{\"member_username\":\"nikhil371\",\"member_gender\":\"Male\",\"member_dob\":0,\"member_country\":\"\",\"state\":\"\",\"city\":\"\",\"hair_colour\":\"\",\"hairstyle\":\"\",\"eye_colour\":\"\",\"eyesight\":\"\",\"complexion\":\"\",\"height\":\"\",\"body_ENGINE\":\"\",\"exercise\":\"\",\"religion\":\"\",\"religious_beliefs\":\"\",\"education\":\"\",\"occupation\":\"\",\"annual_income\":\"\",\"ethnicity\":\"\",\"nationality\":\"\",\"languages\":\"\",\"diet\":\"\",\"smoke\":\"\",\"drink\":\"\",\"current_relationship_status\":\"\",\"preferred_relationship\":\"\",\"profile_tagline\":\"\",\"screened\":\"N\",\"photo_status\":\"None\",\"hidden\":\"N\",\"record_date\":0,\"update_date\":0,\"ip\":\"\",\"member_id\":10548,\"time_stamp\":0,\"photo_key\":\"\",\"profile_personality\":{\"member_username\":\"nikhil371\",\"feature\":\"xcvbnkm\",\"zodiac\":\"vbnim\",\"favorites\":\"qerrb\",\"motto\":\"cvbn\",\"irritated\":\"aguweihjok\",\"sexiest\":\"atwvyebuinmo\",\"good_evening\":\"ywsbciobnom\",\"like_to_do\":\"vdsfd371\",\"outgoing\":\"ev\",\"prefer_to\":\"ebvjnk\",\"record_date\":371,\"update_date\":372,\"profile_other_info\":{\"id\":10516,\"member_username\":\"nikhil371\",\"describe_yourself\":\"tyuh\",\"views\":371,\"admin_login\":\"\",\"screening_assigned_to\":\"\"}}}}"<br i="11"/>
@kulicuu如果您使用JSON.stringify
,则需要使用JSON.parse
反序列化数据,更新您的字段,然后您需要将其重新写入相同的密钥JSON.stringify
。 在 CPU 和空间效率方面都非常浪费。
使用哈希,您可以通过执行类似client.hset('my:key:name','member_gender','female')
来更新单个字段。 如果您使用flat
取消嵌套您的对象,您可以使用client.hset('my:key:name','profile_personality.member_username','asdf')
更新单个文件。
我同意这是不受欢迎的 - 感谢@stockholmux详细讨论为什么会这样 - 但值得一提的是它是一种捷径。
对于上下文,这是我大约 8 个月前写的内容。 我不得不推迟将大部分模型移到 Redis 的 Lua 脚本中的主要重构。
https://github.com/Terebinth/britvic/blob/deprecated_version/server/models/user_iced.iced
(变量d
是redis客户端)
也看看其他一些模型。 @abhinav76
@stockholmux我尝试使用 flat 并且它给了我错误:最大调用堆栈大小超出 ..
你有什么想法吗?
最有用的评论
@stockholmux我尝试使用 flat 并且它给了我错误:最大调用堆栈大小超出 ..
你有什么想法吗?