目前写法:
// 程序启动,读取偏移量
Path path = Paths.get("consumer_1_offset");
Files.readAllLines(path);
// 业务处理 ...
for (int i = 0; i < 111; i++) {
// 偏移量+1
// 业务处理 ...
// 写入偏移量
Files.write(path, "offset".getBytes());
}
应该有更高效的写入方式?这一直在写入流释放流的,感觉效率很低。
1
GeruzoniAnsasu 2023-02-10 21:12:36 +08:00
如果你需要对数据随用随查随删随改
为什么不数据库? |
2
oldshensheep 2023-02-10 21:12:41 +08:00 via Android 1
mmap
|
3
seers 2023-02-10 21:17:43 +08:00 via Android
写到缓存,定时落盘
|
4
yusheng88 OP @oldshensheep 这个好,没使用过,一时间没想到。
|
5
yusheng88 OP @GeruzoniAnsasu 只是很简单的本地暂存偏移量,没必要引入数据库了。读写数据库代价也很大。
|
6
ychost 2023-02-10 21:51:17 +08:00
Sqlite 不行么
|
8
fgwmlhdkkkw 2023-02-11 14:19:26 +08:00 via Android
6
|
9
Dream95 2023-02-11 16:28:51 +08:00
操作系统本身会对文件进行缓存,内存最够的情况下这种频繁写入文件不主动 flush 就相当于在操作内存。
代码看着是 Java ,看了下 API 内部是自动 flush 的,改成最后处理结束后再手动 flush 就 OK 了。 |