Redis思考及基础案例实战

一、简单介绍

redis是一款高性能的NOSQL系列的非关系型数据库。主要用于缓存,可提升数据访问的性能。这里用于做缓存的数据是不经常做改变的数据。核心思想见下图:

redis

使用缓存机制,可以加快我们数据的访问。因为数据是暂存在内存中,直接访问内存的数据可以减少在访问数据库过程中的I/O操作,这样便可以提升系统的性能,查询速度。但是作为缓存也有一定的缺点:数据因为是暂存在内存上的,一旦redis服务端关闭,再次开启时,缓存数据将不复存在。因此在某些场合中,我们需要对redis缓存数据做持久化操作,将其持久化到硬盘上,当再次查询时,可将数据读取到缓存中。

从以上我们看出redis使用时的两点注意事项:

  1. 数据不会经常改变。如果,数据持续改变,就不断的访问数据库,再将数据放入到缓存中。
  2. 确定持久化操作的条件。不能随时随地的进行持久化(反而增加了IO操作),也不能对缓存中大量改变的数据不做持久化数据(会导致数据大量的丢失)。

二、案例实操

通过对redis的基本介绍,我们做一个小案例。案例需求如下:

  1. 提供index.html页面,页面中有一个省份下拉列表
  2. 当页面加载完成后,发送ajax请求,加载所有省份

思路:

当接收到请求时,做redis缓存的查询。如果缓存中存在所需要的数据,就将缓存数据进行返回;如果不存在,就进行数据库查询,同时将数据库中的数据加入到缓存中,再将数据进行返回。

前端接收到的数据是序列化后的Json数据,便于数据的读取,进行页面数据的展示。

**思考:**为什么这里要使用ajax
当我们对页面进行加载时,就需要自动显示后台传递的数据,而没有进行任何链接的操作(form表单提交、点击超链接等操作),而让页面主动对后端进行请求,所以我们这里需要使用ajax,简化我们的操作。

第二点是因为异步请求是为了获取服务器响应的数据,而前端使用的是html,不能够直接从servlet相关的域对象获取值,只能通过ajax获取相应的数据。

以下便是具体实现的代码:

dao层中findAll方法的实现
public class ProvinceDaoImpl implements ProvinceDao {
   

    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    @Override
    public List<Province> findAll() {
   
        String sql = "select * from province";
        List<Province> list = template.query(sql, new BeanPropertyRowMapper<Province>(Province.class));
        return list;
    }
}
service层中findAll方法的实现
public class ProvinceServiceImpl implements ProvinceService {
   

    private ProvinceDao provinceDao = new ProvinceDaoImpl();
    
    @Override
    public String findAllByRedis() {
   
        Jedis jedis = JedisUtils.getJedis(); // 创建Jedis对象,用于redis的操作
        String province = jedis.get("province"); // 获取需要查询的对象
        if (province == null || province.length
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值