欢迎使用ToolGood.AntiDuplication
!ToolGood.AntiDuplication
是一款轻量级防重复提交组件。
private readonly static AntiDupCache<int, int> antiDupCache = new AntiDupCache<int, int>(50, 1);
private readonly static AntiDupQueue<int, int> antiDupQueue = new AntiDupQueue<int, int>(50);
private readonly static DictCache<int, int> dictCache = new DictCache<int, int>();
antiDupCache.GetOrAdd(key, () => {
....
return val;
});
antiDupQueue.GetOrAdd(key, () => {
....
return val;
});
dictCache.GetOrAdd(key, () => {
....
return val;
});
注意:AntiDupCache
、AntiDupQueue
、DictCache
类的GetOrAdd
方法中的key
不要设置为null
,key
为null时,不缓存值。
注意:DictCache
需要手动调用Clear
方法清空缓存。
----------------------- 测试缓存性能 从1到100 重复次数:10000 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
AntiDupCache: 275 221 263 254 263 259 243 269 272 255 257 278
AntiDupQueue: 114 119 122 142 143 136 144 148 142 168 173 166
DictCache: 109 117 120 138 139 127 145 150 160 161 160 193
Cache: 91 96 122 113 103 121 125 123 133 128 156 149
----------------------- 仿线上环境 从1到1000 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 1891 957 641 476 383 318 278 241 218 199 187 164
AntiDupCache: 1868 959 632 481 380 319 269 241 215 195 193 163
AntiDupQueue: 1897 947 629 477 383 321 273 241 212 195 187 162
DictCache: 1897 954 639 470 382 318 277 239 215 195 187 163
Cache: 1888 1897 1901 1871 1892 1879 1850 1845 1860 1830 1812 1909
第二次普通并发: 1950 977 646 476 375 327 278 244 218 190 191 161
----------------------- 开始 从1到100 重复次数:1 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 185 95 62 46 40 39 28 29 22 21 20 20
AntiDupCache: 188 93 64 45 39 39 28 28 22 20 18 22
AntiDupQueue: 190 93 61 47 37 36 29 29 22 19 18 23
DictCache: 186 95 64 46 37 37 29 30 19 19 18 21
Cache: 191 191 184 186 188 186 181 185 187 186 186 180
第二次普通并发: 185 93 60 48 34 36 28 30 22 19 17 20
----------------------- 开始 从1到100 重复次数:2 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 373 188 126 91 75 62 59 48 45 36 37 59
AntiDupCache: 187 96 63 48 37 34 29 26 23 19 18 24
AntiDupQueue: 191 95 63 47 38 33 29 25 20 17 18 23
DictCache: 190 96 65 47 39 32 28 22 23 19 18 23
Cache: 179 190 181 185 188 186 182 180 178 182 180 180
第二次普通并发: 374 183 128 94 72 63 60 46 40 36 37 41
----------------------- 开始 从1到100 重复次数:3 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 555 283 194 144 113 95 87 77 67 55 56 45
AntiDupCache: 187 94 64 46 39 34 27 28 23 18 18 16
AntiDupQueue: 181 92 66 45 37 38 30 29 24 20 18 14
DictCache: 187 95 67 47 38 32 29 23 22 19 18 15
Cache: 183 188 186 191 188 185 183 186 183 182 182 174
第二次普通并发: 559 282 192 141 113 94 90 77 66 55 56 45
----------------------- 开始 从1到100 重复次数:4 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 744 379 250 193 155 131 111 94 93 83 73 70
AntiDupCache: 188 95 65 42 40 34 29 25 22 19 18 19
AntiDupQueue: 193 93 66 44 41 34 30 26 20 18 20 20
DictCache: 187 96 65 47 37 31 28 26 21 20 19 19
Cache: 183 185 187 190 181 187 181 181 179 182 177 179
第二次普通并发: 745 375 255 185 155 127 106 92 90 75 74 67
----------------------- 开始 从1到100 重复次数:5 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 925 473 317 236 191 162 138 120 110 94 90 91
AntiDupCache: 189 94 65 48 37 35 29 26 21 19 18 19
AntiDupQueue: 193 93 65 47 37 34 28 29 23 21 18 20
DictCache: 194 95 68 49 39 35 31 25 22 22 18 19
Cache: 190 184 193 198 192 188 184 184 197 188 179 178
第二次普通并发: 927 464 314 232 191 158 138 126 112 93 93 90
----------------------- 开始 从1到100 重复次数:6 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 1124 566 380 281 224 190 162 141 138 112 112 95
AntiDupCache: 180 93 61 48 38 32 30 25 25 20 18 20
AntiDupQueue: 184 92 64 48 39 36 31 22 20 17 19 19
DictCache: 193 96 63 48 39 35 31 23 22 19 20 20
Cache: 188 190 185 188 184 189 179 188 176 180 186 181
第二次普通并发: 1130 563 389 290 229 192 170 146 132 116 114 93
----------------------- 开始 从1到100 重复次数:7 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 1312 667 446 330 270 225 190 255 162 134 135 122
AntiDupCache: 198 98 67 47 36 33 32 30 22 17 17 20
AntiDupQueue: 188 92 63 45 39 37 31 29 23 19 19 19
DictCache: 189 93 62 48 39 33 30 25 22 20 18 20
Cache: 192 199 196 194 190 193 199 196 192 184 187 180
第二次普通并发: 1306 668 430 330 269 230 190 165 154 129 128 116
----------------------- 开始 从1到100 重复次数:8 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 1507 759 500 384 300 257 220 189 179 153 148 140
AntiDupCache: 187 95 65 47 42 35 29 27 23 20 18 20
AntiDupQueue: 184 99 63 44 41 37 30 27 23 21 18 19
DictCache: 191 96 66 48 38 35 29 25 22 20 18 18
Cache: 191 187 190 188 188 181 183 181 183 182 180 184
第二次普通并发: 1499 755 512 382 305 252 218 186 179 151 150 138
----------------------- 开始 从1到100 重复次数:9 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 1694 839 564 429 341 286 255 215 193 169 167 143
AntiDupCache: 186 94 67 51 39 37 29 26 24 20 20 18
AntiDupQueue: 198 89 63 51 40 36 30 29 25 19 20 17
DictCache: 183 97 65 45 36 33 31 28 23 22 18 17
Cache: 182 189 191 189 182 176 185 184 179 175 177 176
第二次普通并发: 1682 843 573 430 345 277 251 218 193 171 168 147
----------------------- 开始 从1到100 重复次数:10 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 1863 929 634 474 378 321 274 236 212 189 188 160
AntiDupCache: 190 95 66 47 39 33 30 26 23 21 19 19
AntiDupQueue: 184 94 61 49 39 32 31 23 23 20 17 19
DictCache: 186 96 66 46 39 33 28 24 23 20 18 21
Cache: 184 188 191 188 188 181 182 176 186 189 180 177
第二次普通并发: 1873 939 639 470 375 323 274 240 214 188 190 164
----------------------- 开始 从1到100 重复次数:11 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 2051 1039 698 518 421 349 298 274 233 211 188 185
AntiDupCache: 187 95 63 49 42 37 28 29 23 20 22 21
AntiDupQueue: 187 92 68 48 36 35 31 27 25 19 21 20
DictCache: 199 99 65 48 37 34 31 28 24 19 20 19
Cache: 190 193 197 186 192 193 194 199 194 191 190 191
第二次普通并发: 2083 1041 695 521 423 351 299 268 239 213 188 182
----------------------- 开始 从1到100 重复次数:12 单位: ms -----------------------
并发数量: 1 2 3 4 5 6 7 8 9 10 11 12
普通并发: 2241 1132 757 574 460 379 332 286 258 234 206 186
AntiDupCache: 182 91 63 46 38 34 29 28 24 22 22 20
AntiDupQueue: 183 93 63 47 39 35 29 26 27 21 21 17
DictCache: 185 93 64 46 38 32 29 26 26 20 21 19
Cache: 182 187 190 184 185 187 185 184 176 182 187 175
第二次普通并发: 2242 1135 757 561 453 376 326 283 252 227 208 192
----------------------- 结束 -----------------------