检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
使用DCS实现游戏开合服的数据同步 方案概述 应用场景 游戏业务开合服,指一些大型网络游戏为了吸引新玩家,在运营一段时间后,会开启新服务区,当新服务区开放后,老服务区用户存在流向新服务区的趋势,用户数逐渐减少,为了改善老服务区用户的游戏体验,延长游戏生命周期,游戏开发商通常会进行
Lua脚本。 Cluster集群实例支持内置key且跨slot的Lua脚本: 内置key:将Key写入lua脚本中,不作为参数传入。 跨slot:Lua脚本中涉及的所有slot属于一个分片。 问题现象 源实例是Cluster集群,且使用了内置key且跨slot的Lua脚本,迁移到
hashtag的原理、规则及用法示例 hashtag原理 单实例上的mset、lua脚本等处理多key时,是一个原子性(atomic)操作,所有给定key都会在同一时间内被执行。集群每次通过对key进行hash计算到不同的分片,所以集群上同时执行多个key,不再是原子性操作,会存在某些给定
需要查询每个DB的key总数,可以使用自定义dbstats命令。命令执行数据节点上会有CPU冲高。 LUA脚本中不支持多DB。 RANDOMKEY命令不支持。 不支持在lua脚本中使用publish。 DB数支持范围为0 ~ 255。 性能约束: flushdb命令采用逐个key删
redisson分布式锁的加锁和解锁都是执行一段lua脚本功能实现的。 在加锁阶段,需要在lua脚本中执行exists、hset、pexpire、hexists、hincrby、pexpire、pttl命令。 在解锁阶段,需要在lua脚本中执行exists、publish、hexists、pexpire、del命令。
“remain”:200 } 扣量时,服务器通过请求Redis获取下单资格。Redis为单线程模型,lua可以保证多个命令的原子性。通过如下lua脚本完成扣量。 local n = tonumber(ARGV[1]) if not n or n == 0 then return 0
redis-py: 图1 执行python 使用redis-py客户端连接实例。以下步骤以命令行模式进行示例(也可以将命令写入python脚本中再执行): 执行python命令,进入命令行模式。返回如下信息说明已进入命令行模式: 图2 进入命令行模式 在命令行中执行以下命令,连接Redis实例。
使用DCS实现游戏开合服的数据同步 游戏开合服,指大型网络游戏开启新服务器(服务区)或将新老服务器合并。在游戏开合服过程中,会遇到如何将不同服务器数据同步的问题。通过DCS服务Redis的消息队列pub/sub机制,可以将数据变更消息发布到Redis的频道中,其他游戏服务器订阅该频
安装NodeJs redis客户端ioredis。 npm install ioredis 编辑连接Redis实例的示例脚本。 编辑连接示例脚本ioredisdemo.js。示例脚本中增加以下内容,包括连接以及数据读取。 var Redis = require('ioredis'); var
例如弹幕消息,可使用ZREVRANGEBYSCORE排序返回,在Redis 5.0中,新增了zpopmax,zpopmin命令,更加方便消息处理。 (游戏应用)游戏排行榜 在线游戏一般涉及排行榜实时展现,比如列出当前得分最高的10个用户。使用Redis的有序集合存储用户排行榜非常合适,有序集合使用非常简单,提供多达20个操作集合的命令。
CLI工具除了同样不支持上述列出的禁用命令与受限命令,对keys命令也有一定的使用限制。 执行lua脚本失败。 例如报错:ERR unknown command 'EVAL' ,说明您的Redis实例属早期创建的低版本Redis实例,不支持lua脚本,这种情况请提工单联系技术支持,升级您的Redis实例。 执行setname和getname失败。
yourPassword OK redis 192.168.0.148:6379> 脚本使用交互式输入密码鉴权,或使用不同权限的用户管理与执行。 脚本涉及到缓存实例连接,则采用交互式输入密码。如果需要自动化执行脚本,可使用其他用户管理脚本,以sudo方式授权执行。 应用程序中使用加密模块对Redis密码加密配置。
安全问题:通过在redis-cli指定-a参数,密码会被ps出来,属于敏感信息。 解决方案:修改Redis源码,在main方法进入后,立即隐藏掉密码,避免被ps出来。 禁用脚本通过sudo方式执行 安全问题: redis-cli访问参数带密码敏感信息,会被ps出来,也容易被系统记录操作日志。 解决方案:改为通过A
怎么放通SYNC和PSYNC命令? 迁移或导入备份数据时,相同的Key会被覆盖吗? Cluster集群实例使用内置key且跨slot的Lua脚本时迁移失败 迁移故障处理 数据迁移失败问题排查 Memcached如何迁移? 是否支持Memcached和Redis之间实例数据的迁移?
7版本进行开发,兼容开源的协议和命令。本章节主要介绍DCS Redis 3.0命令的兼容性,包括支持命令列表,禁用命令列表,以及不支持的高版本Redis脚本和命令列表,以及命令使用限制说明。 DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0及以上版本。 DCS Redis
景。 使用DCS实现游戏开合服的数据同步 该实践介绍如何使用Redis实现不同服务器数据同步。在游戏开合服过程中,会遇到如何将不同服务器数据同步的问题。通过DCS服务Redis的消息队列pub/sub机制,可以将数据变更消息发布到Redis的频道中,其他游戏服务器订阅该频道,接收数据变更消息,从而实现数据同步。
使用EVAL命令时: 建议使用前先了解Redis的lua脚本特性,具体可参考Lua脚本。 lua脚本的执行超时时间为5秒钟,建议不要在lua脚本中使用比较耗时的代码,比如长时间的sleep、大的循环等语句。 调用lua脚本时,建议不要使用随机函数去指定key,否则在主备节点上执行
业务应用 使用DCS实现热点资源顺序访问 使用DCS实现排行榜功能 使用DCS实现视频直播弹幕和社交网站评论的功能 使用DCS实现游戏开合服的数据同步 使用DCS实现电商秒杀功能 使用DCS改造传统应用系统数据库 升级Redis 3.0实例到高版本实例
notify。 支持brpop、blpop、brpoplpush。 支持发布订阅。 特性限制 仅单机实例不支持数据持久化及备份与恢复的功能。 lua脚本受限使用,所有的key必须在同一个slot,否则会报错,建议使用hashtag技术。 支持多个key的命令中,部分命令要求所有key必须属
使用pipeline,需要客户端和服务端同时支持。 避免在lua脚本中使用耗时代码 lua脚本的执行超时时间为5秒钟,建议不要在lua脚本中使用比较耗时的代码。 比如长时间的sleep、大的循环等语句。 避免在lua脚本中使用随机函数 调用lua脚本时,建议不要使用随机函数去指定key,否则在主备