为什么使用
1、中间缓存
将所有的数据先保存到缓存中,然后再存入mysql中,减小数据库压力,提高效率。
但是当数据再次增加到又一个量级,上面的方式也不能满足需求,由于数据库的写入压力增加,Memcached只能缓解数据库的读取压力。读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了
2、主从分离模式
持久化保证了即使redis服务重启也会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障
从服务器不间断的向主redis发送ping,主服务器如果没有宕机会回应从redis,PONG,如果从redis未收到主redis的回应,会直接作为主redis 替换掉宕机的服务器
在redis的高速缓存,MySQL的主从复制,读写分离的基础分表分库模式
3、 nosql数据库的优势
1)易扩展
这些类型的数据存储不需要固定的模式,无需多余的操作就可以进行横向的扩展。相对于关系型数据库可以减少表和字段特别多的情况。也无型之间在架构的层面上带来了可扩展的能力
2)大数据量提高性能
3)多样灵活的数据模型
在nosql中不仅可以存储String,hash,set、Zset等数据类型,还可以保存javaBean以及多种复杂的数据类型。
4、 NoSql的应用
1) 如淘宝每个节日都会有比较热门的搜索显示在搜索框,当节日过去关键字自动删除,为了便于管理,可以将这些数据保存在redis数据库中,并设置过期时间,到达时间就自动删除。
2)为了缓解数据库压力,微博首先将发送的微博保存到redis数据库,自己可以立即查看到,然后将内存中的数据同步到关系型数据库之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。
理论:
为什么不使用memcached:mysql需要不断进行拆表,memached也要跟着不断扩容,占用大量开发时间
redis缓存放在内存中所以处理速度会比较快(吧数据库的热点数据放到缓存里面这样会加速访问),
非持久化RDB内存快照和AOF日志文件:保持磁盘中aof(执行程序时持续将数据进行备份)rdb(执行rdbsave方法是才会去备份)
redis好处:支持主从服务器的数据同步,主服务器可以同步到从服务器(避免主服务器单点故障,集群一般采用2台主服务器做双机热备),系统泵了可用持久化备份文件恢复数据
redis最好不用用主服务器做持久化数据,rdb影响性能,aop影响重启恢复速度
适合场景:回话缓存Session Cache,全页缓存(FPC),排行榜/计数器(shortd set,set)等
jedis是redis提供的数据源访问和一些redis基础操作方法 ()