结构 利用Redis中Map结构提高效率(redis里的map)
Redis是一个高性能、可基于内存的非关系型数据库,从数据存储结构上来讲,可以分为五类:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和ZSet(有序集合)。Hash类型以field(字段)和value(值)的形式存储,可以用来存储对象的多个属性。利用其内置的一些常用结构,往往可以在极短的时间内实现难以描述的复杂结构,提升系统处理数据和记录元数据的效率。
使用Redis处理结构信息是一个常见的案例,其可以使用 Map 结构将任何数据解析为键/值对的形式。Map结构可以实现多数简单的键/值查询,可以极大的提高存取效率及查询速度。
下面是Redis建立Map结构的一个示例:
// 键
const keyName = 'myMap';// 创建操作:map
client.hmset(keyName, { foo1: 'bar1',
foo2: 'bar2'});
// 查询操作:mapconst result = awt client.hgetall(keyName);
// 返回值result = {
foo1: 'bar1', foo2: 'bar2'
};
比如一个用户投票,现在有一个用户ID表中有200个用户,我们可以利用Map结构以ID为键,以投票数量为值,来存储该用户的投票数。这样便可将原本需要遍历200个用户的操作减少至O(1)。
Map结构也能够实现进一步复杂的结构,比如实现字典树结构,从而极大的提升字符串比较的效果。只要将要比较的字符串都转成HashMap的键即可,便可以实现一个树形结构,从而减少比较及存储字符串的时间。
在利用Redis的Map结构时,无论是以上两个示例,还是其他更复杂的结构,均可以较大的提高系统的效率,得益于Redis的设计精妙。