--
You received this message because you are subscribed to the Google Groups "Redis DB" group.
To unsubscribe from this group and stop receiving emails from it, send an email to redis-db+u...@googlegroups.com.
To post to this group, send email to redi...@googlegroups.com.
Visit this group at http://groups.google.com/group/redis-db.
For more options, visit https://groups.google.com/groups/opt_out.
--
Thanks. To reply some of the suggestions above:1) Why redis is not for internet but only for lan? I don't know if this is because of security reason or not? If I am to use redis, it will be a dedicated instance, will there still be problems?
2) I won't use apple or google's existing service, mainly because we want to make it uniformly, also, there are lot of potential customers whose android phone do not have google service framework installed, nor will they ever signup and use a google account.
3) will polling consume even more battery than push? also, we do want message to arrive as fast as possible, just like in chatting. Also, the message is very simple, like "you have you message", and the client will call a normal api via https to get the message itself.
> Redis doesn't handle anything related to security. Any client that knows that it is connected to Redis can send arbitrary data or even cause it to shut down if you don't rename all of your commands.
I do plan to rename ALL commands. And the "channel" for clients to listen is its object id (a uuid). I think it shoud be safe?
> Redis doesn't handle anything related to security. Any client that knows that it is connected to Redis can send arbitrary data or even cause it to shut down if you don't rename all of your commands.
I do plan to rename ALL commands. And the "channel" for clients to listen is its object id (a uuid). I think it shoud be safe?
My original question is related to redis. I would like to compare the following aspects of the 4 products in a message pushing app:
1. scalability
2. throughput
3. security
4. delay
5.whatever suggestions you may have...
Thanks.
My original question is related to redis. I would like to compare the following aspects of the 4 products in a message pushing app:
1. scalability
2. throughput
3. security
4. delay
5.whatever suggestions you may have...
2. throughput
That's sort of the same thing as #1, you'll likely be limited by your internet connection well before Redis and/or ZeroMQ fall over.
3. security
Redis has little/none. I don't know about the others.
5.whatever suggestions you may have...
If you could use the standard Google/iOS push notifications, you should follow Felix' advice. Since you can't... I'd suggest against Redis due to it's vulnerability to DOS attacks without reworking. Another option is to just use one of the standard XMPP clients/servers that support SSL. They were more or less built for this.
Oh man, sorry to be so contrary today Josiah, but XMPP is also awful, pessimally designed, and a tremendous waste of both bandwidth and processing power (verbose XML + XML parsers in order to implement packet sending). Never use XMPP for any reason unless you need a multi user chat server; and even then, don't use it. Especially not on mobile. This was another hard lesson learned from production mobile experience with the same customer.
Fang, to cut to the heart of the matter, what you need is, as far as we can tell from your partially described requirements, a multi tier solution.
In the first tier, you need something capable of terminating a large number of socket connections -- probably websocket connections. Your best choices here are (a) Pusher; (b) the 'standard' web app front ends like nginx/haproxy; or (c) the 'industrial strength exotics' like Cowboy on Erlang. That thing needs to talk to:The second tier: the application tier, which is where the logic of your application lives. That application tier needs to be horizontally scalable, because generally the 'business logic' involves computation and your computation may be (or may grow to be) an intensive part of your round trip communication. If you chose (a) or (b) above then your app tier can be anything, but popular choices include Ruby frameworks sitting on Unicorn servers, JVM framework languages like JRuby or Java (with Spark) or Clojure using Netty and sitting on containers like Resin. If you chose (c) then you are already writing in Erlang and so you might as well continue writing in Erlang and exploiting OTP.That tier is served by:The final tier: the database tier. This is where Redis and PostgreSQL and Riak, and their lesser cousins MySQL and MongoDB and whatever else, reside. Notice that they are three layers deep, hidden well away from the internet. Depending on the size of your data set and the complexity of each query, each of the holy trinity of databases may be best for your particular use case. None of them are perfect for everything. All of them can be coerced into doing what you want but it will hurt more or cost more depending on which way they are being coerced.It makes no sense to compare front-tier technology against back-tier technology. You can't switch *those* things for each other, it makes no sense.First and most important I recommend that you hire someone immediately who has some amount of experience with internet architecture, so that you don't hurt yourself trying to get a good architecture done on the cheap from mailing lists. Systems offering extremely high scalability to hundreds of thousands of mobile clients are not simple and there are no magic bullets. If there were I would be selling hot dogs on Santa Monica Pier.
I suggest to use zeromq as pub sub server and another queue server it's fast enough.