1.本地 windows 起了个 相同的代码,相同数据,就能全存进去,部署的服务器上 就怎么都对不上数。 2.此 redis 还有其他项目在用,但代码层面,可以排除影响。 3.每次都是 4520 4.配置里没设最大值限制 5.以前没出现过类似情况,这套代码部署过好多个服务器 6.KEY 绝对没有重复,这个反复验证过了 7.没看到哪报错了 …… w(゚Д゚)w~~~~~ w(゚Д゚)w~~~ w(゚Д゚)w
1
tomczhen 2020-07-31 18:29:52 +08:00 via Android 1
最近有疫情,又有水患,水电戾气太重,火电受病毒影响,最好换成核电,这样 CPU 的电子更纯净,自然电到 bug 消。
(狗头保命 |
2
skiworld 2020-07-31 18:32:04 +08:00
太阳黑子活动也会造成主板 CPU 功能异常
|
3
msg7086 2020-07-31 18:32:50 +08:00
插完取一下数看看对不对呗。
|
4
Umenezumi 2020-07-31 18:49:32 +08:00
每次插入的时候取一下试试呗
|
6
rimutuyuan 2020-07-31 18:52:55 +08:00
一般这时候都是人出问题了
看看你取的 key 是不是就 4520 条 |
7
Leigg 2020-07-31 19:07:10 +08:00 via Android
抽插的时候注意观察
|
9
damean 2020-07-31 19:12:59 +08:00
每存一条,打印一条日志记录下,看是从哪一条开始出问题了
|
10
Foxkeh 2020-07-31 19:32:29 +08:00
1.确定这 6030 条 KEY 真的没重复
2.确定你真的插入了 6030 条 3.每次都是 4520 是不是最终出来的结果都是同样的 4520 条? -如果是,插入后检查,那些条目的 K,V 有什么特征,比如长度,类型, 排查覆盖记录的嫌疑 -如果不是,KEY 数量,内存或硬盘占用是不是到了预设上限? |
11
lshero 2020-07-31 19:34:31 +08:00
Redis 压力不大的话 运维没有禁用的话 monitor 命令用起来
|
12
Jooooooooo 2020-07-31 19:40:04 +08:00
信息太少了
不过我会这么排查 存 6031 条最后能拿到多少条? 存 10 条呢? 存 100 条呢? 到底啥时候会开始丢数据 丢的内容有啥规律吗? |
13
iblessyou OP @Jooooooooo 新部署了个 redis 都还是那样。。。
下周用你这方法试下, 代码里少取点存着试试 , 那边正式环境 换一次代码不容易,所以一直尽量没用代码改动来测。数据就更不敢乱动了 @rimutuyuan @Foxkeh 1,非常确定 key 无重复 2,插入的确是 6030 (不管是从代码的日志),还是我本地用相同的代码和数据测试 3,很可能不是同样的 4,内存方面,redis 没设上限,硬盘应该不至于,还运行其他的呢,不至于差这几条数据。 当然其他还有那的设置,我就不知道了,来就是让大家看看,会有什么可能 |
17
EminemW 2020-07-31 20:40:13 +08:00
默认内存超过 50 会清 diao
|
18
ETiV 2020-07-31 20:43:36 +08:00 via iPhone
二分查找…
|
19
wakzz 2020-07-31 22:57:46 +08:00
aof 日志,先分析一波,看看存的 6030 条都在里面,是否有其他请求删除了部分数据。
|
20
wuwukai007 2020-07-31 23:05:25 +08:00 via Android
根据我多年的经验,找自己原因,千万别怀疑编译器
|
21
Repository 2020-07-31 23:40:05 +08:00 via Android
哈哈哈,想起我大学老师的一句话,代码运行结果不对先思考自己的问题,肯定不是编译器错了
|
22
moonsn 2020-07-31 23:42:47 +08:00 via Android
分析一下没插进去的数据的特性?
|
23
cz5424 2020-08-01 09:29:30 +08:00 via iPhone
给 redis 大佬们发邮件,说你们程序有问题(手动狗头
|
24
useben 2020-08-01 16:11:58 +08:00
可能有什么定时任务在搞鬼?
|
25
jifengg 2020-08-03 11:32:26 +08:00
刚想说有没有可能是 redis 回收机制给回收了,但是你说每次都是 4520,那就不是了。先找找软件之外的原因吧。
|
26
iblessyou OP |
27
iblessyou OP @Repository 我没怀疑编译器,现在就是在找到底是哪的问题
|
29
IMCA1024 2020-08-03 15:55:30 +08:00
系统抖动
|
30
iblessyou OP @rimutuyuan
@damean @Foxkeh @Jooooooooo @lshero @Repository @useben @jifengg 排查出来了…… 尝试了存一条取一条,看日志是每个都可以取到的 然后查询的表刚好是个视图,就加了 limit 控制视图的数据量。 然后诡异的事情发生了…… 表数据 100 条时,存入了 100 条 表数据 500 条时,存入了 500 条 表数据 1000 条时,存入了 768 条 表数据 600 条时,存入了 600 条 表数据 800 条时,存入了 800 条 表数据 1000 条时,存入了 1000 条 …… 之后会反复出现类似问题,两次查询插入数量不一样,但是不管一样不一样后,哪怕清了 redis,再执行都会和之前是一样的数量。 猜猜最后是怎么找出的…… 是这句查询 SQL 的坑 int rows =500; .... String sql = "select * from Table t limit " + rows + " offset " + (i - 1) * rows; .... 这里他用了分页查询,每次查 1000 条把数据保存完了再查 500, 但是因为没使用排序,多次查询时,可能会每次的顺序不一样,导致上 500 条和下 500 查询出的可能会出现重复 加了个排序解决了 |
31
iblessyou OP |
32
Jooooooooo 2020-08-03 16:17:56 +08:00
|
34
jifengg 2020-08-05 12:41:12 +08:00
果然还是被忽略的地方出了问题啊。
|