# ToolGood.AntiDuplication **Repository Path**: mirrors_toolgood/ToolGood.AntiDuplication ## Basic Information - **Project Name**: ToolGood.AntiDuplication - **Description**: 当网络波动时,可防重复提交 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-22 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ToolGood.AntiDuplication === 欢迎使用`ToolGood.AntiDuplication`!`ToolGood.AntiDuplication` 是一款轻量级防重复提交组件。 ### 快速上手 ```` csharp private readonly static AntiDupCache antiDupCache = new AntiDupCache(50, 1); private readonly static AntiDupQueue antiDupQueue = new AntiDupQueue(50); private readonly static DictCache dictCache = new DictCache(); 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 ----------------------- 结束 ----------------------- ````