web开发常用 redis, ssdb 缓存处理

web 开发中为了增加接口的响应速度或者业务逻辑的处理速度,会对写使用频率比较高,或者对实时性要求比较高的数据做缓存

1、mysql 的使用
  • mysql 使用查询语句获取数据时,应秉持尽量少的查询次数,将查询参数尽量拼接的原则。
    • 如用户表,在已知多个用户id,查询其某些属性时,应使用and语句一次性将多个用户的属性查出,而非对用户进行单个属性的查询
2、需要使用缓存的数据具有以下特征
  • 基础服务数据
    • 比如证券行业使用的股票行情数据,需要频繁为其他业务提供服务。
  • 独立数据
    • 比如官网首页数据,和用户或账号无关的数据,并且访问频率比较高的数据。
  • 冷数据
    • 此部分数据更新频率较低或不更新
3、缓存的时机
  • 项目启动时缓存
    • 自活能力::如果使用缓存,则需要缓存很强的自活能力,比如项目运行时发现缓存丢失,可以自行初始缓存,以保证项目的正常运行。
    • 异步缓存: 项目启动不宜耗时太久,如果项目启动时的缓存数据过多,则建议将数据内容进行分类,在项目启动时将独立的数据进行异步初始化缓存处理。
    • 缓存日志: 缓存完成时将缓存结果输出到日志中,以便获取项目启动时的缓存进度和结果。
  • 定时缓存
    • 满足业务需求:根据数据的实时性和有效性,对数据进行定时缓存(注意对服务器资源的占用处理,尽量优化处理部分的代码)。
    • 保证数据的准确性:需要及时清理或覆盖历史缓存数据。
  • 事件触发缓存
    • 具体逻辑具体分析
  • 手动调用缓存
3、redis & ssdb 的选择
  • 允许丢失且读取频率较高的数据使用 redis
  • 需要持久化的数据 ssdb
4、redis & ssdb 的使用
  • 数据结构的设计
    • 不建议将包含迭代的数组或字典转换为json串作为value值进行存储。value在读取频率不高的情况下,建议最大单位为 2 层字典或数组嵌套的json串。
  • key-value
    • 存储简单数据类型,或访问频率以及数据量都很小的复杂数据类型
  • hash-map
    • 存储数据量比较多,读写频率比较高的数据
  • set
    • 集合数据,多涉及到业务数据
  • zset
    • 支持排序的集合,多涉及到具体业务
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,941评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,293评论 19 139
  • 转载地址:http://gnucto.blog.51cto.com/3391516/998509 Redis与Me...
    Ddaidai阅读 21,492评论 0 82
  • 得了一种大老师同款起名废的病... 盼了好几天的雨终于还是来了,虽然逾期但没有逾约就好。洗了澡,躺在床上,感受着窗...
    大蜜哟阅读 2,415评论 3 0
  • 每日,沉溺于《秋天的怀念》里,夜竟也不安稳。 那位命苦的母亲,始终在脑海里穿梭。 读懂文本,对于像我这样年纪的人,...
    雪域飞燕阅读 3,669评论 1 3