因系统需求需要查询大量实时数据。
每次接收到请求就需要插入记录表和更新实时表,有高并发时扛不住。
这时就需要用到redis缓存来解决。
在访问测试服务器redis时发现怎么都连接不上。
开始排查问题:
-
服务器redis是否宕机
-
云服务端口是否开启
-
在服务器上是否可以查询redis
结果都没问题
百度了一下发现redis配置中默认绑定为只有本机可以访问。
这时候修改下配置即可
- 打开redis配置文件 (redis.windows.conf)(由于windows服务器,所以下载windows的redis)
- 在56行 红色框中 将bind 127.0.0.1 注释掉
- 在75行修改 protected-mode no 为no (保护模式为no)
- 添加该属性 daemonize no (守护进程)
之后进行访问即可
以下为存redis和取出redis的一些快捷代码记录一下
pom依赖
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.67</version>
</dependency>
//取出redis存入object
Object o = redisService.get(mobileNo);
//object转换为JSONObject
JSONObject jsonObject = JSONObject.parseObject(o.toString());
//JSONObject 转换给对象
//(此行代码在转换过程中对于时间及长度单位较大的数据会进行科学计算,
// 如接收对象中类型为Double类对象会对数据有污染,所以也需要注意)
LocationVO locationVO = JSON.toJavaObject(jsonObject, LocationVO.class);
系统设计为A系统存数据 B系统取数据。
在开发过程中遇到过由于存入的数据带有全路径地址的声明,所以即使赋值给Object也不行,所以在存入的时候尽量将JSON.toString一下,再取的时候就没问题了。
如果您有更优的接收方式或转换方式,请您评论下。感谢!