今天redis第二篇——关于hgetall

    周五时,要将某种对象缓存到redis中。因为这类对象中某些字段是会经常变动的,所以不能直接序列化成json存储。当时看到redis中有hash这种数据结构,就想当然的一个对象一个hash,搞定!

    但是今天发现不是那会事。那样存储的话,取信息时,使用的命令是hgetall或者hmget。他们的时间复杂度是O(N),N是要取的字段数量。这势必会十分消耗资源。

    最好的做法是,对象全部信息序列化成json存储一个hash里面,某个变动的字段存储到一个hash里面。取得时候,先取出全部信息,反序列化成对象,再取变动的字段,覆盖对应的值。假设对象有10个字段,1个是经常变动的。第一种存法,每次取对象全部信息,处理时间是10,第二种则是2。

    看来下周一要去改代码了。。。

你可能感兴趣的:(今天redis第二篇——关于hgetall)