redis特性
速度快
10w ops 每秒10w次读写访问
- 数据存在内存
速度:reguster寄存器、l1cache、l2cache、main memory内存、localdisk、remotedisk
类型 | 每秒读写次数 | 随机读写延迟 | 访问宽带 |
---|---|---|---|
内存 | 千万级 | 80ns | 5gb |
ssd | 35000 | 0.1-0.2ms | 100-300m |
机械 | 100 | 10ms | 100m |
- c语言写的50000行,
- 单线程
持久化
断电不丢数据,redis所有数据保持在内存中,对数据的更新异步保存在磁盘中,数据结构:
- string/blobs/bitmaps 字符串
- hash tables(objects)
- linked list
- sets
- sorted sets
补充:
- bitmaps 位图
- HyperLogLog 超小内存唯一值计数
- geo 地理信息定位
支持多种语言
功能丰富
- 发布订阅
- lua脚本
- 事务
- pipeline(并发)
简单
- 代码少,可定制
- 不依赖外部库
- 单线程模型
主从复制
高可用分布式
- redis-sentinel(v2.8)支持高可用
- redis-cluster(V3.0)支持分布式
redis典型应用场景
缓存系统
app server–>redis–>storage
计数器
转发数 评论数 点击数 阅读数 关注数等
消息队列系统
简单的消息队列
排行榜
有序集合
社交网络
粉丝数 关注数 共同关注
实时系统
垃圾邮件处理 过滤器 位图
阿里巴巴淘宝中的应用
首页中各数据存储位置
阿里巴巴首页以女装为例:
- 商品基本信息:存储在关系型数据库mysql(阿里定制更改的)中
- 商品描述、详情、评价信息:存在mango
- 商品的图片:分布式文件系统 hadoop hdfs
- 商品的关键字:isearch搜索引擎
- 商品波段性的热点高频信息:redis
- 商品的交易、价格计算、积分累计:第三方接口、支付宝
阿里数据平台服务层uds
阿里统一数据平台服务层udsl,负责连接数据层
映射
实现业务模型各属性与底层不同数据源的模型数据映射,目前支持isearch、redis、mongodb
- udsl 提供了l2缓存,异步并行查询,兵法控制,过滤高位查询解决性能问题,数据访问调用统一api
- 应用–>api—>udsl—>mapping dsl—>数据层
- dsl:维护业务模型和各易购数据源的映射关系,提供跨异构数据源的模型数据映射
- udsl:中的数据代理,提供全站统一的数据服务,使得各数据源对上层透明,简化了数据架构
api
提供api接口:
- 查询:find orderBy limit eq gt大于 desc
- 持久化:insert、update、delete、insertOrUpdate 参数就是数据对象
- udsl自动分析查询更新参数,并更具模型字段映射配置,转换成底层各数据源的native语句进行数据操作
热点缓存 热点缓存平台
即l2缓存,有以及缓存索引亩查询udsl时,首先根据查询匹配dsl,判断热点,如果热点匹配,根据查询条件生成cache key,根据key访问cache index,如果命中,返回一组查询结果数据的id列表,根据查询结果到kv系统中取得查询结果数据