1. 为什么使用缓存?
当网站的处理和访问量非常大的时候,我们的数据库的压力就变大了,数据库的连接池,数据库同时处理数据的能力就会受到很大的挑战,一旦数据库承受了其最大承受能力,网站的数据处理效率就会大打折扣。此时就要使用高并发处理、负载均衡和分布式数据库,而这些技术既花费人力,又花费资金。
2. 使用场景
- 页面缓存经常用在cms内存管理系统,第一次从数据库读取,然后生成一个静态页面,以后所有的读取,只加载这个静态页面就可以了
- 数据缓存经常用在页面的具体数据
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获取所有的值,自我感觉非常好用!