Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jwpttcg66/redis-game-transaction
在大型游戏中经常使用分布式,分布式中因为游戏逻辑会经常游戏事务,借助redis特性我们可以实现分布式锁和分布式事务。很多redis集群不支持redis的事务特性。 这个框架用来解决分布式服务器下redis集群事务失效的情况下,基于分布式锁完成分布式事务。支持独占锁,共享锁,读写锁,并且支持事务提交失败情况下的回滚操作,让开发者可以有更多时间侧重游戏逻辑.
https://github.com/jwpttcg66/redis-game-transaction
distributed-locks game-engine game-transaction gameengine gametransaction lock redis redis-client redis-cluster redis-cluster-client redis-game redis-lock redis-transaction redisgame redisgametransaction redislock redistransaction transaction transactionservice
Last synced: 4 days ago
JSON representation
在大型游戏中经常使用分布式,分布式中因为游戏逻辑会经常游戏事务,借助redis特性我们可以实现分布式锁和分布式事务。很多redis集群不支持redis的事务特性。 这个框架用来解决分布式服务器下redis集群事务失效的情况下,基于分布式锁完成分布式事务。支持独占锁,共享锁,读写锁,并且支持事务提交失败情况下的回滚操作,让开发者可以有更多时间侧重游戏逻辑.
- Host: GitHub
- URL: https://github.com/jwpttcg66/redis-game-transaction
- Owner: jwpttcg66
- License: apache-2.0
- Created: 2016-11-25T10:15:31.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-04-17T19:05:22.000Z (almost 2 years ago)
- Last Synced: 2025-01-10T12:53:05.678Z (11 days ago)
- Topics: distributed-locks, game-engine, game-transaction, gameengine, gametransaction, lock, redis, redis-client, redis-cluster, redis-cluster-client, redis-game, redis-lock, redis-transaction, redisgame, redisgametransaction, redislock, redistransaction, transaction, transactionservice
- Language: Java
- Homepage:
- Size: 2.3 MB
- Stars: 155
- Watchers: 15
- Forks: 104
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: License.txt
Awesome Lists containing this project
README
# Redis-分布式-事务
> 在大型游戏中经常使用分布式,分布式中因为游戏逻辑会经常游戏事务,借助redis特性我们可以实现分布式锁和分布式事务。很多redis集群不支持redis的事务特性。
这个框架用来解决分布式服务器下redis集群事务失效的情况下,基于分布式锁完成分布式事务。支持独占锁,共享锁,读写锁,并且支持事务提交失败情况下的回滚操作,让开发者可以有更多时间侧重游戏逻辑.此框架已经上线手游项目两年,经过百万级DAU验证,稳定运行.## 互斥锁使用例子
> 可参考test下的entity.
1. 生成事务原因,GameTransactionCauseImpl里面构造.
2. 生成锁实体,GameTransactionEntityFactoryImpl里面构造TimeMutexEntity.
3. 提交锁实体跟事务,transactionService.commitTransaction里面提交.
4. 后去事务提交结果,根据返回值做出判断.## 读取锁使用例子
> 可参考test下的read 可以设置默认是否成功读取到
1. 生成读取事务原因GameTransactionCause里面已经构造好了.
2. 生成读取锁实体GameTransactionEntityFactory里面已经构造好了.
3. 提交读取锁实体跟事务transactionService.commitTransaction里面提交.
4. 后去事务提交结果 根据返回值做出判断.## 标记锁使用例子
可参考test下的lockattchment可以设置默认是否成功读取到
#### 写锁例子如下
1. 生成事务原因,GameTransactionCauseImpl里面构造.
2. 生成锁实体,GameTransactionEntityFactoryImpl里面构造.
3. 生成锁标记内容 GameTransactionEntity对象获取GameTransactionLockInterface锁使用setContent
4. 提交锁实体跟事务,transactionService.commitTransaction里面提交.
5. 后去事务提交结果,根据返回值做出判断.#### 读锁例子如下
1. 生成读取事务原因GameTransactionCause里面构造.
2. 生成读取锁实体GameTransactionEntityFactory里面构.
3. 生成锁标记内容 GameTransactionEntity对象获取GameTransactionLockInterface锁使用setContent
4. 提交读取锁实体跟事务transactionService.commitTransaction里面提交.
5. 后去事务提交结果 根据返回值做出判断.#### 强制写锁使用例子如下
> 可参考test下的force
> 当锁存在的情况,延迟锁占用时间。
> 例子如下
1. 生成事务原因,GameTransactionCauseImpl里面构造.
2. 生成锁实体,GameTransactionEntityFactoryImpl里面构造ForceEntity.
3. 提交锁实体跟事务,transactionService.commitTransaction里面提交.
4. 后去事务提交结果,根据返回值做出判断.## 带时间写锁使用例子如下
> 参考test下的testlock.
> 当锁存在的情况,延迟锁占用时间。
> 例子如下1. 生成事务原因,GameTransactionCauseImpl里面构造.
2. 生成锁实体,GameTransactionEntityFactoryImpl里面构造TestTimeMutexEntity.
3. 提交锁实体跟事务,transactionService.commitTransaction里面提交.
4. 后去事务提交结果,根据返回值做出判断.## 带时间等待写锁使用例子如下
> 参考test下的wait.当锁失败的情况下,会尝试每秒检查锁,直到设置的等待时间结束.例子如下
1. 生成事务原因,GameTransactionCauseImpl里面构造.
2. 生成锁实体,GameTransactionEntityFactoryImpl里面构造WaitMutexEntity.
3. 提交锁实体跟事务,transactionService.commitTransaction里面提交.
4. 后去事务提交结果,根据返回值做出判断.## 带事务回滚写锁使用例子如下
> 参考test下的rollback.当事务提交失败的情况下,根据提交进度进行rollback.例子如下
1. 生成事务原因,GameTransactionCauseImpl里面构造.
2. 生成锁实体,GameTransactionEntityFactoryImpl里面构造RollbackMutexEntity.
3. 提交锁实体跟事务,transactionService.commitTransaction里面提交.
4. 后去事务提交结果,根据返回值做出判断.## 已经集成spring和redis集群
> 参考test下的spring代码最后通过maven部署,
- 作者qq 330258845
- QQ群310158485