redis简单认识

Redis:
Reids:是一个开源完全免费的非关系型数据库,由于 吞吐量大,读写速度快我们常将redis作为缓存使用,从而减轻数据库的压力,redis遵循的是BSD协议,(BSD协议是一个对用户完全公开的协议,用户可以根据自己的业务需求去修改源码,也可以将修改后的版本进行发布,但是你发布使用了BSD协议的代码或者在BSD协议代码的基础上做了二次开发自己的产品时需要满足三个条件1、发布的产品中包含了源码必须也要遵守BSD协议;2、不能用原代码的名字或者作者的名作做市场的推广;3、发布的只是二进制类库、软件、需要在类库软件的文档和版权中表名原来代码中的BSD协议)
redis缓存产品有三个特点:
1、redis支持数据持久化、可以将数据保存在磁盘中,还有一个是类似于快照机制,定期进行存储redis中的数据,一个是直接进行克隆将数据进行存储、等重启的时候可以再次加载进行使用
2、存储的数据类型较为丰富,除了我们常用的Key-value类型的还有String、List、Set、zSet、
3、redis还支持数据备份,使用master-slave模式进行数据备份

redis的优势:读写性能高读每秒11万次,写每秒8.1万次
redis支持事务,对数据操作要么都成功,要么都失败,单个操作支持原子性,多个操作支持事务性

AOF:记录redis中每次执行的命令,保存到指定硬盘上
RDB:是一个快照机制,在规定的时间内将数据进行一次存储,但是一点不好就是在没有达到规定的时间但是服务器忽然死机,就会导致数据丢失

redis为什么这么快:
因为redis存在内存中,他是非阻塞io

redis缓存穿透怎么办?
缓存穿透就是当客户端发送过来一个请求,来请求一个数据,当这个请求的数据数据库中没有的情况下,redis缓存中也不会存在,但是在查询一遍redis时,就去查询数据库,查询数据库没有就不会写入缓存中,就会返回一个空,如果这个请求并发量大的话就会频繁的从redis中进行查询,然后频繁的查询数据库,这样就会为我们系统造成宕机的危险,
解决方法:
1、将数据库中查询出来为空的查询,我们在redis中设置一个默认值,为了防止这个默认值占用我们的资源我们可以给他设置个存活时间,这样并发量访问大的话就会返回这个默认值,
缓存雪崩怎么办?
缓存雪崩就是说,当缓存的数据失效,而新的数据还未到期间,这时候所有的请求都回去访问数据库,由于并发量他大就会导致数据库的性能降低,或者导致服务器宕机
解决方法;
1、给每个请求都添加上安全锁,访问数据库的只有一个线程,但是这个方法对付小并发量的问题还可以勉强维持,如果过劳一千个请求,就会阻塞999个请求,影响用户的体验,这个方法并不能完全解决
2、就是为每一个缓存都添加一个标记,如果标记时间到了,就会调用我们内部的一个线程,去根据指定的key进行查询数据,再次进行保存,假如我们把数据的标记设置成30分钟,那么我们就将数据缓存有效期设置成40分钟,如果标记时间到期了,就可以自动就去后台进行查询,这时候因为我们标记的缓存数据还没有过期,所有程序还能够正常运行,当线程查询完数据,对原先的数据进行了跟新,程序就能够正常运行了。

redis的缓存失效策略:
1、FIFO  先进先出,会自动判断,数据被存储的时间,离目前最远的数据优先被淘汰;    
2、LRU 最近最少使用:    判断最近被使用的时间,目前最远的数据优先被淘汰。
3、LFU 最不经常使用,在一段时间内,数据被使用次数最少的,优先被淘汰。

在Windonw系统上启动reids:
1、进入redis的文件内打开cmd命令行,输入 redis-server.exe redis.windows.conf 启动redis,
2、在redis的所在位置在开启一个cmd命令行输入命令进入redis:redis-cli -h 127.0.0.1 -p 6379 -a “密码”

猜你喜欢

转载自blog.csdn.net/acca13439767987/article/details/81503517