黑马旅游网——redis优化

Redis优化

针对上一篇博客(黑马旅游网),记录一下学到的知识点。
上篇博客链接:黑马旅游网
Redis学习笔记:Redis入门 转载于‘西邮陈冠希’的博客
Redis学习笔记:图片理解Redis数据类型 转载于‘锦衣夜行_’的博客
个人理解 仅供参考,欢迎指出错误

  • 刚入门的时候,开发前端页面(例如:HTML网页)都是静态获取数据(写导航的时候,用ul、li、a等写的静态代码)。在写黑马旅游网,碰到从数据库中获取导航分类信息,然后动态显示到前端,如果用普通的数据查询显示,每次刷新都会访问一次数据库,从而给数据库带来巨大的压力,因此,有没有什么方式可以减轻数据库压力呢?这就是Redis优化。把不经常改变的数据(例如:导航分类,没有新商品上架一般不改变分类),放进缓存中,需要查询的时候先去缓存中取,没有再去数据库中查询。

笔记

  • jedis就是集成了redis的一些命令操作,封装了redis的java客户端。提供了连接池管理。一般不直接使用jedis,而是在其上在封装一层,作为业务的使用。
  • 项目中,是把分类的uid作为权值(Score),存入缓存中。

下面是CategoryServiceImpl代码,先在redis缓存中查询,没有再去数据库中查询。

package com.li.travel.service.impl;

import com.li.travel.dao.CategoryDao;
import com.li.travel.dao.impl.CategoryDaoImpl;
import com.li.travel.domain.Category;
import com.li.travel.service.CategoryService;
import com.li.travel.util.JedisUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public class CategoryServiceImpl implements CategoryService {
    CategoryDao categoryDao = new CategoryDaoImpl();
    Jedis jedis = JedisUtil.getJedis();

    @Override
    public List<Category> findAll() {
        //先从redis查找
        Set<Tuple> categories = jedis.zrangeWithScores("category", 0, -1);
        List<Category> lists = null;
       if(categories == null || categories.size()==0){
           System.out.println("从数据库查询");
           lists = categoryDao.findAll();
           //把数据存入redis
           for (Category list : lists) {
               jedis.zadd("category",(int)list.getCid(),list.getCname());
           }
       }else{
           System.out.println("缓存中查询数据");
           //将set类型的categories转为List类型。
           lists = new ArrayList<Category>();
           for (Tuple category : categories) {
               Category c = new Category();
               c.setCname(category.getElement());
               c.setCid((int)category.getScore());
               lists.add(c);
           }
       }

        return lists;

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值