redis可以通过hash存储来做数据的存储,如: data_obj = { fight_state : 1, other_state : 0 }; redis_client.hset( 'online_users’, user_id, JSON.stringify( data_obj ), cb ); 然后这样我们就可以得到一个在线用户的列表online_users。同时如果某个用户状态就行更新我们也可以用 redis_client.hset去更改某个用户的值,而不用像memcache一样去更新整个用户列表。
我的问题是: 这样得到的列表只有一层目录,如果我只想更新某个用户下面fight_state,而不是通过整个date_obj替换来实现局部数据更新,可以实现不?
7 回复
当然可以,就要使用我写的JSV了。(不过貌似没发布,只有我们团队的在用)
大致是这样的,JSON
你可以理解为他是等同于XML
的。XML
有PATH
解析,那么JSON
也有PATH
解析工具。我之前写过一个,用起来超爽的那种。
可以考虑用lua scripting 来实现,如果修改fight_state不是一个很耗时的操作,可以考虑一下这种实现。 不过一般遇到这种情况,大家会把fight——state other——state 拆成两个使用 另外一种方法是修改redis自己实现一下,这种方法老外似乎比较喜欢用,谁让redis开源呢。