redis 是什么
1.1redis定义:
Redis :Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(
key-value)数据库 Redis 与其他 key - value 缓存产品有以下三个特点:1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3)Redis支持数据的备份,即master-slave模式的数据备份
1.2redis与mysql等区别
(
1)类型上
从类型上来说,mysql是关系型数据库,redis是缓存数据库
(2)作用上
mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢
redis用于存储使用较为频繁的数据到缓存中,读取速度快
(3)需求上
mysql和redis因为需求的不同,一般都是配合使用。
1.3redis的优点
- 1性能极高-redis能支持超过10w次每秒的读写频率
- 丰富的数据类型:String ,Lists,hashes,sets及orderd sets
- 原子性 - redis的所有的操作都是原子性的,同时redis还支持对几个操作后的原子性执行
- 丰富特性-- 支持发布订阅模式 ,通知,key过期等特性
- 单线程操作
redis内部结构是什么
参考 https://www.cnblogs.com/gaopengfirst/p/10062980.html
redis怎么使用
4.1redis的使用场景
String 类型:
- 秒杀 – 原子性来计数 100个商品,通过incr 或者decr 进行递增或递减操作,判断库存
- 用户信息共享—
- 对帖子总数实时统计----
- 对tomcat集群 ,通过redis来实现session共享问题–
- p2发送短信,把短信放入session里面 过期问题— 将用户的ip,存入redis中,给设置一个过期时间,判断key是否失效,可以重新发送短信验证码
4.2redis使用的集群模式,以及不同版本下的集群模式选择
参考https://blog.csdn.net/miss1181248983/article/details/90056960
参考 https://www.cnblogs.com/diegodu/p/9183356.html
4.3redis 的持久化机制选择
rdp:每60秒写入1000key到redis,发起快照,持久化到磁盘
aof: 每秒钟往aof文件写入命令;
每次操作都往aof文件中写入命令;
系统自检判断什么时候写入命令
怎么选择持久化机制,及优缺点
4.4 redis 单线程怎么保证高性能
1.内存操作快
2.单线程操作,避免了频繁的上下文切换
3.采用了非阻塞I/O多路复用机制
4.5redis怎么保证与数据库的一致性
如果对数据有强一致性要求,不能放缓存
将不一致分为三种情况:
-
数据库有数据,缓存没有数据;
-
数据库有数据,缓存也有数据,数据不相等;
-
数据库没有数据,缓存有数据。
解决方法:
-
对删除缓存进行重试,数据的一致性要求越高,需要删除缓存时间越短。
-
定期全量更新,简单地说,就是我定期把缓存全部清掉,然后再全量加载。
-
给所有的缓存一个失效期,这个长短根据业务来,不然与数据库交互太频繁。
4.6、Redis的数据类型及使用场景
String:一般做一些复杂的计数功能的缓存;
Hash:单点登录;
List:做简单的消息队列的功能;
Set:做全局去重的功能;
SortedSet:做排行榜应用,取TOPN操作;延时任务;做范围查找。
以后继续补充