美文网首页架构
redis做mysql的缓存

redis做mysql的缓存

作者: 指下光年 | 来源:发表于2021-06-10 11:41 被阅读0次

1. 为什么使用缓存?

当网站的处理和访问量非常大的时候,我们的数据库的压力就变大了,数据库的连接池,数据库同时处理数据的能力就会受到很大的挑战,一旦数据库承受了其最大承受能力,网站的数据处理效率就会大打折扣。此时就要使用高并发处理、负载均衡和分布式数据库,而这些技术既花费人力,又花费资金。

2. 使用场景

  1. 页面缓存经常用在cms内存管理系统,第一次从数据库读取,然后生成一个静态页面,以后所有的读取,只加载这个静态页面就可以了
  2. 数据缓存经常用在页面的具体数据

3. Redis缓存原理

redis缓存其实就是把经常访问的数据放到redis里面,用户查询的时候先去redis查询,没有查到就执行sql语句查询,同时把数据同步到redis里面。redis只做读操作,在内存中查询速度快。

4. 如何使用redis做缓存

使用redis做缓存必须解决两个问题,首先就是确定用何种数据结构存储来自mysql的数据;确定数据结构之后就是需要确定用什么标识来作为数据的key。
mysql是按照表存储数据的,这些表是由若干行组成。每一次执行select查询,mysql都会返回一个结果集,这个结果是由若干行组成的。redis有五种数据结构:列表list,哈希hash,字符串string,集合set,sorted set(有序集合),对比几种数据结构,string和hash是比较适合存储行的数据结构,可以把数据转成json字符串存入redis。

5. 关于获取所有的key

全量遍历键:keys pattern keys *
有人说 KEYS 相当于关系性数据的库的 select *,在生产环境几乎是要禁用的

  • KEYS命令的性能随着数据库数据的增多而越来越慢
  • KEYS命令会引起阻塞,连续的 KEYS命令足以让 Redis 阻塞

不管上面说的对不对,keys肯定是有风险的。那我们就换一种方案,在存数据的时候。把数据的键存一下,也存到redis里面选hash类型,那么取的时候就可以直接通过这个hash获取所有的值,自我感觉非常好用!

相关文章

  • redis做mysql的缓存

    1. 为什么使用缓存? 当网站的处理和访问量非常大的时候,我们的数据库的压力就变大了,数据库的连接池,数据库同时处...

  • SpringBoot 使用 Redis 做缓存

    springboot 使用 redis 做缓存 maven 添加 redis 缓存支持