zoukankan      html  css  js  c++  java
  • note

    redis默认为空,永不落地。 mysql存储数据。

    读取数据时,先从redis里查找,如果没有,则从mysql中查找,查找成功后,起协程将该数据加载到 redis中,并且在redis中为该数据的key设置过期时间。

    如果读取数据从redis中找到数据且修改了该数据,则重置该key的过期时间,并将该key记录到一个地方(或使用redis的key监控事件,这样外部修改redis数据时,也可以同步到DB),然后使用异步线程将该数据落地到mysql.

    这样一来,后台统计类操作,可以直接操作MYSQL,数据是最新的。修改类操作,使用接口操作REDIS,也可以操作DB后删除REDIS中相应key(这种方法可以少写些接口)

    这样redis就是当成内存数据库使用,且实现了冷热数据的调度,然后兼顾后台人员统计的方便性。 

    游戏服务器需要封装数据操作接口:

    取数据——从REDIS——从MYSQL——异步写回REDIS并设置过期时间

    写数据——写REDIS并更新过期时间——键通知事件触发——写入MYSQL

    日志类数据,直接异步写入MYSQL的日志库。

    协议类数据,可以异步写入MYSQL或mongdb (可以直接写MYSQL,这样可以给后台需求,做出常用的统计查找功能)

  • 相关阅读:
    The type new View.OnClickListener(){} must implement the inherited abstract method View.Onclicklis
    vue开发环境跨域
    浅析deep深度选择器
    模块化
    highlight-current-row无效的解决方法
    element-ui的table 在页面缩放时,出现的问题
    css变量
    节流和防抖
    promise详解
    正则表达式详解
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/6641440.html
Copyright © 2011-2022 走看看