kanyun-inc/YTKKeyValueStore

如何更新某个字段??

Closed this issue · 8 comments

对于一些复杂的逻辑,比如多条件查询又比如更新某一个字段的值,请问如何做到呢?

稍微看了下代码。应该是通过key找到table中的id字段中的json。整条替换对应id字段的记录。达到json替换的目录,完成一个字段的更新。

@Donny2g 正如 @thuai 所说,如果更新某一个字段,就更新整个json值。受限于用户自己的客户端,所以数据库记录条数不会很多。

@Donny2g 多条件查询这种事情我做iOS开发遇到得非常少。如果遇上这种需求,那就先在表A中查一下,然后把命中的结果再到表B中查一下。或者更暴力一些,把表A和表B的内容全部拿到内存中,在内存中查询即可。

@tangqiaoboy 数据库记录条数你们最多大概会有多少条?通过keyValue这样转换存储到sqlite上面你们遇到过性能瓶颈么?

封装成 简易的key-value操作,弄成简易的redis类似操作,不错。不过这样模拟其实本质上还是db,效率方便并是不真正意义上的哈希。上面说的多表联合查询其实在移动端还是比较常见的。
挺好的,根据业务适当集成吧。
给个建议,可以加上一个过期时间。对于这种key-value的持久化,失效限制是必要的

@thuai 数据多的时候条数有几十万条吧,没遇到过性能瓶颈。
@Singsmlie 其实我是加了过期时间的哟,要做缓存失效处理非常简单,最多5行代码,我打算后面在wiki中介绍写法。

@Singsmlie 多表查询这事看你怎么做设计 ,我们做网易微博那阵,不也直接NOSQL搞定所有事情了。联表查询可以用一些其它方法替代的。

@Singsmlie 关于过期时间,我更新了文档:

YTKKeyValueStore还提供了以下接口来获取表示内部存储的key-value对象。

// 获得指定key的数据
- (YTKKeyValueItem *)getYTKKeyValueItemById:(NSString *)objectId fromTable:(NSString *)tableName;
// 获得所有数据
- (NSArray *)getAllItemsFromTable:(NSString *)tableName;

由于YTKKeyValueItem类带有createdTime字段,可以获得该条数据的插入(或更新)时间,以便上层做复杂的处理(例如用来做缓存过期逻辑)。