Redis面经
什么是Redis
Reidis是一种内存数据库 数据结构数据库 KV数据库 (kv memcached string)
Redis支持的数据结构有六种 string list hash set zset stream
为什么要使用Redis
mysql关系型数据库的读写较慢 频繁访问Mysql会达到服务器的性能瓶颈
为了提高访问速度 可在中间加载一层Redis
登录操作的流程
1、首先查询Redis 用户的数据
2、如果没有 就去Mysql查询
3、如果有则直接返回
Redis的读写速度快
且提供非常丰富的数据结构 如 zset可以实现一种实时的排行榜
比如说set 如果使用Mysql 需要做唯一键处理
mysql里List 需要保证插入顺序 Hash需要建立很多字段
面试常问问题
缓存击穿
Mysql中数据是存在的,在Redis中Key可能过期 可能不存在 当我们get这个数据的时候先去Redis中查询
因为没有 所以再去Mysql中get 如果有大量这样的请求,则会有大量的请求连接我们的Mysql数据库,等于Redis并没有起作用,但会多走这么一步
即:数据源存在 缓存不存在 或者过期(expire),此时有大量请求该数据的请求过来,数据压力都会涌入Mysql
为了解决缓存击穿 可以加锁 位置加在Redis,带成功返回值的命令 set(key,1)加锁,如果不存在 则去访问Mysql 获取数据成功之后,该数据则会同步到Redis中&