浏览代码

[doc] Describe available client options.

Daniele Alessandri 12 年之前
父节点
当前提交
36671ad26a
共有 1 个文件被更改,包括 119 次插入0 次删除
  1. 119 0
      doc/client.rst

+ 119 - 0
doc/client.rst

@@ -112,7 +112,126 @@ pass                Password for HTTP authentication (`Webdis`_).  not set    `P
 Users can also specify their own parameters, they will simply be ignored by the
 Users can also specify their own parameters, they will simply be ignored by the
 client but can be used later to pass additional information for custom purposes.
 client but can be used later to pass additional information for custom purposes.
 
 
+
 Client Options
 Client Options
 ''''''''''''''
 ''''''''''''''
 
 
+Several behaviours of `Client` can be controlled via client options with values
+that vary depending on the nature of each option: some of them accept primitive
+types while others can also take instances of classes implementing some specific
+interfaces defined by Predis, which can be useful to completely override the
+standard ones used by `Client`::
+
+   $client = new Predis\Client($parameters, array(
+       'prefix'      => 'predis:'
+       'profile'     => '2.6',
+       'connections' => array(
+           'tcp'  => 'Predis\Connection\PhpiredisConnection',
+           'unix' => 'Predis\Connection\PhpiredisConnection',
+       ),
+   ));
+
+To achieve an even higher level of customizability, certain options also accept
+callables acting as initializers that can be leveraged to gain full control over
+the initialization of option values (e.g. instances of classes) before returning
+them to `Client`::
+
+   $client = new Predis\Client('tcp://127.0.0.1', array(
+       'prefix'  => 'predis:',
+       'profile' => function ($options, $option) {
+           // Callable initializers have access to the whole set of options
+           // (1st argument) and to the current option instance (2nd argument).
+
+           return new Predis\Profile\ServerVersion26();
+       },
+   ));
+
+Users can also specify their own custom options to pass additional information.
+Just like standard options, they are accessible from callable initializers::
+
+   $client = new Predis\Client('tcp://127.0.0.1', array(
+        // 'commands' is a custom option, actually unknown to Predis.
+       'commands' => array(
+           'set' => Predis\Command\StringSet,
+           'get' => Predis\Command\StringGet,
+       ),
+       'profile'     => function ($options, $option) {
+           $profile = $option->getDefault();
+
+           if (is_array($options->commands)) {
+               foreach ($options->commands as $command => $class) {
+                   $profile->defineCommand($command, $class);
+               }
+           }
+
+           return $profile
+       },
+   ));
 
 
+This is the full list of client options supported by `Client`:
+
+==============  ======================================================  ================================================
+option          description                                             default
+==============  ======================================================  ================================================
+exceptions      Changes how `Client` treats `error replies`_:           true
+
+                - when ``true``, it throws `Predis\\ServerException`.
+                - when ``false``, it returns `Predis\\ResponseError`.
+--------------  ------------------------------------------------------  ------------------------------------------------
+prefix          When set, the passed string is transparently applied    not set
+                as a prefix to each key present in command arguments.
+
+                .. note::
+                   Keys are prefixed using rules defined by each
+                   command in order to be able to support even complex
+                   cases such as `SORT`_, `EVAL`_ and `EVALSHA`_.
+--------------  ------------------------------------------------------  ------------------------------------------------
+profile         Changes the Redis version `Client` is expected to       2.6
+                connect to, among a list of :doc:`server profiles`
+                predefined by Predis. Supported versions are: ``1.2``,
+                ``2.0``, ``2.2``, ``2.4``, ``2.6``, ``dev`` (unstable
+                branch in the Redis repository).
+
+                This option accepts also the fully-qualified name of
+                a `Predis\\Profile\\ServerProfileInterface`
+                or its instance passed either directly or returned by
+                a callable initializer.
+--------------  ------------------------------------------------------  ------------------------------------------------
+connections     Overrides :doc:`connection backends` by scheme using    - tcp: `Predis\\Connection\\StreamConnection`
+                a named array, with keys being the connection schemes   - unix: `Predis\\Connection\\StreamConnection`
+                subject to change and values being the fully-qualified  - http: `Predis\\Connection\\WebdisConnection`
+                name of classes implementing
+                `Predis\\Connection\\SingleConnectionInterface`.
+
+                This option accepts also the fully-qualified name of
+                a `Predis\\Connection\\ConnectionFactoryInterface`
+                or its instance passed either directly or returned by
+                a callable initializer.
+--------------  ------------------------------------------------------  ------------------------------------------------
+cluster         Changes how `Client` handles :doc:`clustering`:         predis
+
+                - ``predis`` indicates the use of client-side
+                  sharding.
+
+                - ``redis`` indicates the use `redis cluster`_.
+
+                This option accepts also the fully-qualified name of
+                a `Predis\\Connection\\ClusterConnectionInterface`
+                or its instance passed either directly or returned by
+                a callable initializer.
+--------------  ------------------------------------------------------  ------------------------------------------------
+replication     When ``true``, the array of connection parameters is    not set
+                used in a master and slaves :doc:`replication` setup
+                instead of treating the servers as a cluster of nodes.
+
+                This option accepts also the fully-qualified name of
+                a `Predis\\Connection\\ReplicationConnectionInterface`
+                or its instance passed either directly or returned by
+                a callable initializer.
+==============  ======================================================  ================================================
+
+.. _error replies: http://redis.io/topics/protocol#status-reply
+.. _redis cluster: http://redis.io/topics/cluster-spec
+.. _SORT: http://redis.io/commands/eval
+.. _EVAL: http://redis.io/commands/eval
+.. _EVALSHA: http://redis.io/commands/evalsha