Permalink
Browse files

Add a couple of paragraphs in the FAQ.

  • Loading branch information...
nrk committed Mar 31, 2012
1 parent 871f1a3 commit 31c47362fbb1e81700ce8251609913642966134b
Showing with 42 additions and 0 deletions.
  1. +42 −0 FAQ.md
View
42 FAQ.md
@@ -56,3 +56,45 @@ generalized when using Redis because of the many possible access patterns for th
mean that it is impossible to have such a feature, you can leverage Predis' extensibility to define your
own serialization-aware commands. See [here](http://github.com/nrk/predis/issues/29#issuecomment-1202624)
for more details on how to implement such a feature with a practical example.
+
+
+### How can I force Predis to connect to Redis before sending any command? ###
+
+Explicitly connecting to Redis is usually not needed since the client library relies on lazily initialized
+connections to the server, but this behavior can be inconvenient in certain scenarios when you absolutely
+need to do an upfront check to detect if the server is up and running and eventually catch exceptions on
+failures. In this case developers can use `Predis\Client::connect()` to explicitly connect to the server:
+
+```
+$client = new Predis\Client();
+
+try {
+ $client->connect();
+}
+catch (Predis\Network\ConnectionException $exception) {
+ // We could not connect to Redis! Your handling code goes here.
+}
+
+$client->info();
+```
+
+
+### How Predis implements abstraction of Redis commands? ###
+
+The approach used in Predis to implement the abstraction of Redis commands is quite simple. By default
+every command in the library follows exactly the same argument list as defined in the great online
+[Redis documentation](http://redis.io/commands) which makes things pretty easy if you already know how
+Redis works or if you need to look up how to use certain commands. Alternatively, variadic commands can
+accept an array for keys or values (depending on the command) instead of a list of arguments. See for
+example how [RPUSH](http://redis.io/commands/rpush) or [HMSET](http://redis.io/commands/hmset) work:
+
+```
+$client->rpush('my:list', 'value1', 'value2', 'value3'); // values as arguments
+$client->rpush('my:list', array('value1', 'value2', 'value3')); // values as single argument array
+
+$client->hmset('my:hash', 'field1', 'value1', 'field2', 'value2'); // values as arguments
+$client->hmset('my:hash', array('field1'=>'value1', 'field2'=>'value2'); // values as single named array
+```
+
+The only exception to this _rule_ is the [SORT](http://redis.io/commands/sort) command for which modifiers are
+[passed using a named array](https://github.com/nrk/predis/blob/v0.7.1/tests/Predis/Commands/KeySortTest.php#L56-77).

0 comments on commit 31c4736

Please sign in to comment.