Comments (5)
Hi @jinhao,
Thanks for your interest.
This function uses SETNX. When key already holds a value, no operation is performed.
So, this function should not refresh the expire time of the key.
from limiter.
redis 127.0.0.1:6379> get a
"18"
redis 127.0.0.1:6379> ttl a
(integer) 907
redis 127.0.0.1:6379> watch a
OK
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> setnx a 1000
QUEUED
redis 127.0.0.1:6379> expire a 1000
QUEUED
redis 127.0.0.1:6379> EXEC
- (integer) 0
- (integer) 1
redis 127.0.0.1:6379> ttl a
(integer) 995
this is my test result, .is it any problem? my redis version is 2.6.14
from limiter.
@gillesfabio
I test it, and add print ttl every request
131 if count < rate.Limit {
132 remaining = rate.Limit - count
133 }
134
135 log.Printf("count:%d ttl:%d remaining:%d\n", count, ttl, remaining)
the result:
➜ http git:(master) ✗ go run main.go
Server is running on port 6379...
2015/10/27 19:03:28 count:2 ttl:60 remaining:2
2015/10/27 19:03:28 count:3 ttl:60 remaining:1
2015/10/27 19:03:30 count:4 ttl:60 remaining:0
2015/10/27 19:03:31 count:5 ttl:60 remaining:0
2015/10/27 19:03:31 count:6 ttl:60 remaining:0
2015/10/27 19:03:33 count:7 ttl:60 remaining:0
2015/10/27 19:03:34 count:8 ttl:60 remaining:0
2015/10/27 19:03:34 count:9 ttl:60 remaining:0
2015/10/27 19:03:36 count:10 ttl:60 remaining:0
2015/10/27 19:03:36 count:11 ttl:60 remaining:0
2015/10/27 19:03:36 count:12 ttl:60 remaining:0
2015/10/27 19:03:38 count:13 ttl:60 remaining:0
2015/10/27 19:03:38 count:14 ttl:60 remaining:0
2015/10/27 19:03:38 count:15 ttl:60 remaining:0
2015/10/27 19:03:49 count:16 ttl:60 remaining:0
2015/10/27 19:03:49 count:17 ttl:60 remaining:0
2015/10/27 19:03:49 count:18 ttl:60 remaining:0
from limiter.
👍 Argh. Yes. SETNX
only works with value.
Fixed here: 8ba0f24
Tell me if it works for you. I tried with a time.Sleep()
and it properly sets TTL.
Thanks @jinhao.
from limiter.
ok, it works! Thanks.
from limiter.
Related Issues (20)
- Reintroduce Ping function to the Client interface HOT 3
- Feature Request: Please can you add rqlite as store HOT 2
- Limit for every 5 minute HOT 1
- Please consider adding SkipList option HOT 1
- Rate limiting based on custom identity HOT 2
- ERR bad lua script for redis cluster HOT 1
- Which time windows does this limiter use? HOT 1
- Custom keys? HOT 1
- limit of dynamic route HOT 1
- Should use the rightmost ip in x-forwarded-for, if used at all HOT 7
- another dynamic limit need HOT 9
- Limiters with momery store are not working as expected HOT 3
- A key can be limited forever HOT 2
- About algorithms HOT 2
- Consider changing the in memory cache library HOT 1
- I plan to consider using limiter middleware in the management system
- Gin Middleware Limiter with momery store are not working
- Consider support long time connection rate limit (Websocket) HOT 1
- Add custom Header value for limiter Option
- Feature Request: Please support goframe framework HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from limiter.