o2server服务器自带三种cache实现 ehcache,guava,redis
7.0.0以前的版本默认使用ehcache,7.1.0以后的版本默认使用guava
ehcache
ehcache实现方式采用的是 Ehcache 组建.使用服务器内存作为缓存空间.
guava(推荐)
guava实现方式采用 Guava 实现,使用服务器内存作为缓存空间.
对比与ehcache,guava没有专门的线程进行缓存数据的淘汰,而是在查找时进行校验,所以占用线程较少.
redis
redis实现使用 Jedis 作为redis客户端,链接到redis服务器实现缓存.
由于redis服务器通过网络进行通讯,无法实现CompliedScript的缓存(原因是CompliedScript无法序列化),会忽略CompliedScript对象的缓存,改由本地直接编译,所以在使用脚本的情况下会影响速度.不建议在使用脚本的情况下采用.
三种缓存对比
类型 | 内存消耗 | 线程占用 | 速度 | 额外服务器 | 集群支持 | 编译脚本缓存 |
ehcache | 高 | 高 | 快 | 不需要 | 支持 | 支持 |
guava | 高 | 低 | 快 | 不需要 | 支持 | 支持 |
redis | 低 | 低 | 慢 | 需要 | 支持 | 不支持 |
配置
服务器默认已经实现了guava的缓存配置,可以通过config/cache.json文件进行修改配置.默认情况下config目录下无此文件,样例文件在configSample目录下.
{ "type": "guava", "redis": { "host": "127.0.0.1", "port": 6379.0, "user": "", "password": "", "connectionTimeout": 3000.0, "socketTimeout": 3000.0, "sslEnable": false, "index": 0.0, "###host": "redis服务器地址###", "###port": "redis服务器端口###", "###user": "认证用户###", "###password": "认证口令###", "###connectionTimeout": "连接等待时间###", "###socketTimeout": "response返回等待时间###", "###sslEnable": "是否启用ssl###", "###index": "数据库编号###" }, "ehcache": { "jmxEnable": false, "###jmxEnable": "是否启用jmx###" }, "guava": { "maximumSize": 3000.0, "expireMinutes": 30.0, "###maximumSize": "缓存最大容量,默认值:3000.###", "###expireMinutes": "过期时间,默认值:30.###" }, "###type": "缓存类型:ehcache,redis,guava###", "###redis": "redis配置###", "###ehcache": "ehcache配置###", "###guava": "guava配置###" }
修改配置文件后需要重启生效.