商品查询加速Redis简单实现(商品查询redis)
Redis是一个基于内存的高性能Key-Value存储系统,它具有很多特点,如单线程,非阻塞IO,数据传输快、可扩展性等,由于其这些优点,Redis成为用户商品查询优化的重要工具之一,下面介绍一下Redis在商品查询加速中的应用:
Redis可以用来缓存数据库的访问,即将数据放入Redis中,当用户需要查询商品时,先从Redis中获取商品数据,而不用每次去访问数据库,从而提高商品查询的效率。如下图所示:
![图片.png](https://upload-images.jianshu.io/upload_images/14466577-5ce5c9e5f20c683d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Redis可以利用它的高性能,进行模糊查询,将用户输入的关键词与商品中的关键词进行匹配,从而实现快速查询,如下是一个简单的模糊查询实现代码:
//redis的实现
public String getByMatch(String pattern){ Jedis jedis = new Jedis("127.0.0.1", 6379);
//获取keys列表 Set keys = jedis.keys(pattern);
//循环获取值 Iterator it=keys.iterator() ;
while(it.hasNext()){ String key = it.next();
//获取值 String value = jedis.get(key);
//返回查询结果 return value;
} return null;
}
Redis还可以通过减少检索实体的数量,从而提高商品查询的速度,如将数据分组,将商品按照类别进行分组,这样只需要在分组中搜索,就能减少检索实体的数量,从而提高商品查询的速度。下面的代码可以实现将商品按照类别进行分组:
//使用Redis分组加速查询
Map> map = new HashMap>();
for(Goods goods : list){ if(map.get(goods.getCategory()) == null){
List goodsList = new ArrayList();
goodsList.add(goods); map.put(goods.getGroup(), goodsList);
}else { map.get(goods.getGroup()).add(goods);
}}
//将分组后的商品存入Redisfor(String key : map.keySet()){
jedis.sadd(key, map.get(key));}
以上就是Redis在商品查询加速中的应用。Redis作为一个高性能的Key-Value存储系统,无论是数据库访问或模糊查询以及减少检索实体的数量,都可以极大的提高查询的效率。