Redis实现大表高效查询(大表查询 redis)
传统数据库实现大表查询时,这里指一个表中记录超过20w数据量,由于数据量过大,IO次数也会增加,降低查询的效率。而Redis的内存存储能力和多种数据类型以及操作,都能够有效支撑大数据量查询,并且拥有高性能的查询。具体实现方式如下:
**1、 将原有的数据进行Redis有效分割**
无论用一种存储方式,都要把原有的数据结构划分,分类别的存储。如把存储查询”name”这个关键字的所有数据放到一个”name” 键里,而不是对存储专卖之前的那种把所有数据放到一个表里。
// eg.
// 把查询”name”的数据放到一个”name”的键里 SET name "Mike"
**2、通过Hashing算法化简计算**
查询有一定的重复性,只要研究一次查询结构,就能保存计算结果,让后面的查询可以直接从缓存池中取出计算结果,这部分可以采用Hashing算法去计算。把算出来的Hashing结果,存储到一个HahsMap之中,那么,原有的那些查询条件,可以统一作为键,Hash结果作为值,存储到一个哈希表里,等到查询带来来查询时,先从这哈希里查找,然后根据查到的结果从原数据里取出数据。
**3、对常见查询结果采用缓存**
对常见的查询出现的结果采用Redis的缓存技术,缓存技术的实现很多,比较常用的是LRU和LFU,LRU是Least Recent Used算法,LFU是Least Frequently Used,意思就是把最近被访问的数据保存到缓存中,不断地更新,也可以采用LFU保存频繁访问的数据,这种缓存技术实际上可以简单理解为把不断变化的查询结果保存在内存中,下次就直接调用缓存中保存的结果,不用重新查询数据库,可以极大提升查询的效率:
// 以设定缓存来保存数据
SET myName "alex"// 设置Redis的缓存时间,指定缓存的过期时间
EXPIRE myName 10
// 设置有效的缓存SET myName "alex"
//设置hashHSET myName "name" "alex"
EXPIRE myName 10
Redis是一种性能高,可扩展性好的数据库,可以有效实现大表查询效率,实现方式主要是把原有的数据进行Redis有效分割,通过Hashing算法化简计算,以及对常见查询结果采用缓存的技术。Redis的优点在大表查询上不可替代,可以实现大表读取数据,提升查询效率。