redis 基础(一) 初步了解redis
1缓存相关
1.1缓存穿透
问题:查询的key再redis中不存在,对应的id在数据库也不存在。此时被非法用户进行攻击,大量的请求会去数据库(DB)造成宕机,从而影响整个系统。这种现象称之为 缓存穿透;
解决方法:缓存redis把空的数据也缓存到redis中,比如空字符串,空对象等;
1.2缓存雪崩
在高并发下,大量缓存key在同一时间失效,大量请求直接落在数据库上,导致数据库宕机。
缓存雪崩一般只能缓解,不能杜绝;
解决方式:缓存永不过期、过期时间错开(避免大量缓存同一时间过期)、多缓存结合(redis、Memcache)【先请求redis,没有就去Memcache】、采购第三方redis(比如阿里云)
2 分布式架构
- 什么是分布式架构:
- 不同的业务(功能模块)分散部署在不同的服务器
- 每个子系统负责一- 个或者多个不同的业务模块
- 服务之间可以相互交互与通信
- 分布式系统设计对用户透明
- 可以发展为集群分布式系统架构
- 举例单体架构和分布式架构
- 分布式架构优点:
- 业务解耦
- 系统模块化,可重用化
- 提升系统并发量
- 优化运维部署效率
- 分布式架构缺点:
- 架构复杂
- 部署多个子系统复杂
- 系统之间通信耗时
- 新人融入团队缓慢.
- 调试复杂.
- 分布式架构设计原则
- 异步解耦
- 幂等- -致性
- 拆分原则(功能、业务拆分)
- 融合分布式中间件
- 容错高可用
3Nosql
3.1什么是NoSql
- 存值方式: key-value
- Not Only Sql
- 传统项目使用纯数据库
- 为互联网和大数据而生
- 水平(横向)扩展方便高效
- 高性能读取
- 高可用
- 存数据,做缓存
3.2Nosql常见分类
- 键值对数据库:Redis. Memcache
- 列存储数据库:Hbase. Cassandra
- 文档型数据库:MongoDB. CouchDB
- 图形数据库:Neo4J、FlockDB
4分布式缓存
4.1什么是分布式缓存
- 提升读取速度性能
- 分布式计算领域
- 为数据库降低查询压力
4.2什么是reids
- NoSql
- 分布式缓存中间件
- key-value存储
- 提供海量数据存储访问
- 数据存储在内存里,读取更快
- 非关系型、分布式、开源、水平扩展
5分布式缓存方案对比
5.1Ehcache(适合单应用)
- 优点:
- 基于java开发
- 基于JVM缓存
- 简单、轻巧、方便
- 缺点:
- 集群不支持
- 分布式不支持
5.2Memcache
- 优点:
- 简单的key-value存储
- 内存使用率比较高
- 多核处理,多线程.
- 缺点:
- 无法容灾(重启后之前数据无法恢复)
- 无法持久化
5.3Redis
- 优点:
- 丰富的数据结构
- 持久化.
- 主从同步、故障转移
- 内存数据库
- 缺点:
- 单线程
- 单核