Comments (7)
@djhalaninext Your code has a great risk of entering an infinite tight loop (thus maxing out CPU without doing anything good) when the read_reply()
returns an error other than "read timeout", like "close" (when redis closes the connection prematurely). Always be VERY careful about while true
loops.
from lua-resty-redis.
@djhalaninext Also, set_keepalive
puts the underlying connection into the connection pool and shuts down the current resty.redis
object and I don't think you want that upon every loop iteration. Better read the official documentation more carefully.
from lua-resty-redis.
@djhalaninext Another thing is that it's better to put require()
on the top level of your Lua module instead of calling it everytime your function is called. require
cannot be JIT compiled and it does not make sense to call it over and over again.
from lua-resty-redis.
@djhalaninext Always handle the errors of those resty.redis
calls carefully in Lua, including set_keepalive
and read_reply
.
from lua-resty-redis.
@djhalaninext For redis subscribing, it's normal to get the read timeout
error, which is not fatal at all. You just need to try read_reply
again on the same resty.redis
object. But as I've mentioned above, you MUST handle any other errors explicity without retrying read_reply
blindly over and over again. Because for other fatal errors, any subsequent read_reply
call will always return the "closed" error immediately, leading to hot tight looping in your example.
from lua-resty-redis.
@djhalaninext BTW, please use the openresty-en mailing list for such general discussions instead. Thank you for your cooperation! Please see http://openresty.org/#Community
from lua-resty-redis.
@agentzh Thanks for all the input. Will fix and post more questions in openresty-en mailing list.
from lua-resty-redis.
Related Issues (20)
- SSL not working
- The performance of redis pipeline mode is unstable HOT 3
- CLIENT SETNAME?
- redis:get(key) question HOT 2
- opm package outdated HOT 1
- Connection pool not creating HOT 2
- How to create a single redis connection HOT 5
- this support two-way authentication?
- Add keepalive for redis client to make the connections reliable
- Nginx 1.24 HOT 2
- Nginx creates more connection than poolsize, backlog to redis HOT 5
- lua tcp socket read timed out, context: ssl_certificate_by_lua*, client: 172.69.58.204, server: 0.0.0.0:443 HOT 2
- redis set_keepalive doesn't work HOT 1
- lua entry thread aborted: runtime error: /usr/local/openresty/lualib/resty/redis.lua:357: bad request HOT 2
- no request found HOT 1
- Add the host:port to the error message
- Reading from client: error:0A000126:SSL routines::unexpected eof while reading
- red:smembers("key"), sometime not include the new member? HOT 6
- [Feature Request] Pipeline coroutine safety HOT 6
- Redis: timeout HOT 5
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 lua-resty-redis.