lusiqi

redis特性

速度快

10w ops 每秒10w次读写访问

  • 数据存在内存
    速度:reguster寄存器、l1cache、l2cache、main memory内存、localdisk、remotedisk
类型每秒读写次数随机读写延迟访问宽带
内存千万级80ns5gb
ssd350000.1-0.2ms100-300m
机械10010ms100m
  • 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系统中取得查询结果数据

 评论