多问几个为什么!

  1. 什么是自增id?
  2. 为什么游戏后端需要自增id?使用唯一id不行吗?
  3. 自增id有哪些方案?
  4. 我选择什么方案?为什么这么选择?

给出自己的见解

  1. 自增id是指 一个接口返回的值是一个正整数,且该接口多次调用后不断增加(可能每次不是加1)且不重复。
  2. 游戏业务中包含角色等 初始配置相同,可重复获得,不可堆叠的的元素,需要使用唯一id加以区分。自增id有唯一id的特性,并且对数据库插入操作更加友好。
  3. 自增id有多种方案
方案 性能 优点 缺点
使用关系数据库主键自增 实现方便 无需额外依赖 性能低 无法高并发
snowflake雪花算法及其衍生算法(uidgenerator, leaf, tinyid等) 超高 性能超高 单机可实现 使用时间有限制 需额外配置机器id或者workId
redis的incr原子自增命令 实现方便 无需额外依赖 可能会有重复id
  1. 综合来看,使用snowflake算法或者redis自增id都是可行的,最终我选择的是 redis的incr原子自增命令。有以下几点原因:
  • redis的自增id性能满足需求
  • 后端框架本身依赖redis,实现非常方便
  • 在redis设置AOF落地策略时,不会有重复id,性能上有所下降,玩家在线不高的情况下也能满足需求。
  • 对redis自增id有更高性能需求,也可以选择使用RDB方式落地,选用此种方式可能会由于redis宕机导致重复id的出现。重复id出现后,后端框架在数据同步过程中也能自动补偿。

游戏后端自增id选型相关推荐

  1. Twitter-Snowflake,64位自增ID算法详解

    Twitter-Snowflake,64位自增ID算法详解 from: http://www.lanindex.com/twitter-snowflake%EF%BC%8C64%E4%BD%8D%E8 ...

  2. mysql自增id前端安全显示_mysql使用自增id遇到的坑

    背景 最近在做一个项目,给APP提供接口,用户认证机制采用了JWT(JSON Web Token).项目开发完之后,给用户测试(删档测试),测试完之后,清空了数据库里的数据,之后又其他用户注册了.然后 ...

  3. 自增ID有什么坏处?什么样的场景下不使用自增ID? 1

    这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: [自增ID有什么 ...

  4. 游戏后台生成唯一ID

    游戏后台生成唯一ID   MMO游戏后台通常需要由大量服务器来共同承载海量玩家,虽然玩家可能分布在不同的游戏大区,但是他们可能会通过跨服等等方式进行各种交互.游戏中的角色,装备,物品等需要生成一个全局 ...

  5. 基于Java的Minecraft游戏后端自定义插件 的Java实践项目整理

    Minecraft_Plugin 1.项目概述 2.系统设计 3.功能模块成果展示 4.个人总结 1.项目概述 1.1 项目简介 小组准备编写一个具有武器战斗,道具收集.互动社交和任务悬赏四大系统的聚 ...

  6. 7年Java游戏后端,被淘汰辛酸史

    本人Java开发6年半不到7年的样子. 英语专业,临毕业跟着隔壁专业去培训了四个月Java. 跟他们一起来了北京找工作,一找就是5个多月,面试100多家公司.最终还是隔壁专业的同学介绍到他们公司才就业 ...

  7. 技术分享 | 关于 MySQL 自增 ID 的事儿

    作者:贲绍华 爱可生研发中心工程师,负责项目的需求与维护工作.其他身份:柯基铲屎官. 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 当我们使用 M ...

  8. mysql自增id原理_《MySQL自增ID》告诉你不为人知的“秘密”......

    原标题:<MySQL自增ID>告诉你不为人知的"秘密"...... 作者:Sunshine Koo 1.概述 " MySQL数据库是最常使用的数据库之一,我们 ...

  9. mysql自增id突然变大到超出范围

    问题描述 mysql 我采用 id 自增生成策略,但是经过后端导入数据,刚插入的1-2条数据 id 生成正常,但是后面突然增大,导致id超出范围. 问题原因 首先排查数据库原因,我手动添加数据,看数据 ...

  10. 面试官问:如果MySQL的自增 ID 用完了,怎么办?

    欢迎关注方志朋的博客,回复"666"获面试宝典 如果你用过或了解过MySQL,那你一定知道自增主键了.每个自增id都是定义了初始值,然后按照指定步长增长(默认步长是1).虽然,自然 ...

最新文章

  1. 【转】expect语言学习笔记
  2. 零基础自学python教程-零基础人员可以学习python吗?|Python培训基础教程
  3. apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
  4. 面试基操:微服务拆分需要考虑什么因素?
  5. Python with上下文管理及自定义上下文管理
  6. 从还珠格格到街头霸王!80后的怀旧神器 三星GalaxyFold另类体验
  7. Linux中的Page cache和Buffer cache详解
  8. nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!...
  9. Nitrux 图标主题与 Faenza 一样的设计 – 漂亮
  10. PHP消息队列的实现方式
  11. android 微信 语音,安卓手机微信不能发语音的解决办法
  12. Sublime Text 3在行前插入递增数字序号的方法
  13. 【生活中的逻辑谬误】以泪掩过和以笑饰非
  14. 01_CSS简介.html
  15. 星光不负赶路人|2022年终总结
  16. Linux下time/timestamp相关。
  17. matlab仿真四轮abs,ABS系统的simulink的仿真。
  18. Vercel+Railway部署Typecho动态博客(超详细图文教程-Vercel CLI办法)
  19. python+django勤工助学管理系统Vue项目介绍
  20. Deepin编译安装 mongoc++ 驱动程序

热门文章

  1. storm风暴英雄 tempo_Tempostorm战队攻略:新版本下的终结者天赋
  2. Qt涂鸦板及其放大简例
  3. 【可收藏】3W字,Docker 从入门到精通
  4. java自行车s码适合身高_选购单车时,身高和尺寸对应表
  5. 卫星导航定位误差之多路径地球自转相位缠绕相位中心误差地球潮汐
  6. 数据分析指标到底应该怎么解读?
  7. 世界杯爆冷的球队的最新相关信息
  8. 2017年杭州市大学生自主创业政策
  9. 基于lingo的线性回归和非线性回归
  10. 手机/电脑的wifi已连接不可上网是什么原因?怎么办?