作者:zhaohui

redis存储对象

redis已经应用相当广泛了,但redis本身并没有直接存储对象的方法,我们可以通过转换对象的方式来存储对象。 大致总结了以下几种方案来存储对象: 方案一:序列化对象为二进制 使用redis的接口: 至于序列化方式,我们有很多种选择,比如:Java serialize,Protobuf,或者自己手动序列化都行 方案二:序列化对象为字符串 使用redis的接口: 序列化为字符串,我们也有很多选择:Json(Jackson,FastJson),Xml等方式 方案三:转换对象为Map 使用redis的接口: 将对象转成一个map: 将map转成java对象: 这种方式有一个优势:在更新对象的时候不需…

阅读全文 »

redis集群方案

单机 redis最主要的适用场景:少量数据存储,高速读写访问,数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能。 分布式 随着用户量的增长,数据量随之增长,大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,这时候我们需要横向扩展,多台主机共同提供服务,既分布多个redis协同工作。大致有如下几种集群方案: 方案一:Redis官方集群方案Redis Cluster Redis Cluster由3.0版本正式推出,是一种服务器sharding技术,对客户端来说是完全透明的。 Redis Cluster中,Sharding采用slot(槽)的概念,一共分成1638…

阅读全文 »

Excel2DB

这是一款将excel转成二进制文件的软件,excel对非技术人员来说很容易填写数据,但是excel对程序来说并不是很友好; 一个常用的环境是在游戏开发中,经常有大量的原型数据,而原型数据经常都是通过excel进行编写,此项目将excel转成ndb文件(二进制文件),然后客户端和服务器可以按照指定的格式读取,极大的减少了客户端包体的大小。 源码地址:https://github.com/ksfzhaohui/excel2db

阅读全文 »

netty自定义协议

java越来越多的用于服务器端的开发,少不了的要与客户端,服务器内部其他模块进行通信,netty帮我们实现了底层的通信,也实现了对一些常用协议的支持,比如http等,但有时候我们需要保证数据的及时性,安全性,比如游戏开发,及时性我们可能需要尽可能的控制协议包的大小,这时候我们可以自定义协议。 总体将一个协议分为:协议头和协议数据 协议头: 协议数据:就是我们需要的业务对象,后面写的编解码器就是帮助我们 业务对象->二进制数据 编码 二进制对象-> 业务对象 解码 header对象 消息对象: header解码器: header编码器: 抽象解码器: 抽象编码器: 抽象方法中提供的transfo…

阅读全文 »