CHANGELOG 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. v0.6.0 (2010-05-??)
  2. * Switched to the new multi-bulk request protocol for all of the commands
  3. in the Redis 1.2 and Redis 2.0 profiles. Inline and bulk requests are now
  4. deprecated as they will be removed in future releases of Redis.
  5. * The default server profile is "2.0" (targeting Redis 2.0.x). If you are
  6. using older versions of Redis, it is highly recommended that you specify
  7. which server profile the client should use (e.g. "1.2" when connecting
  8. to instances of Redis 1.2.x).
  9. * Support for Redis 1.0 is now optional and it is provided by requiring
  10. 'Predis_Compatibility.php' before creating an instance of Predis\Client.
  11. * New commands added to the Redis 2.0 profile since Predis 0.5.1:
  12. - Strings: SETEX, APPEND, SUBSTR
  13. - ZSets : ZCOUNT, ZRANK, ZUNIONSTORE, ZINTERSTORE, ZREMBYRANK, ZREVRANK
  14. - Hashes : HSET, HSETNX, HMSET, HINCRBY, HGET, HMGET, HDEL, HEXISTS,
  15. HLEN, HKEYS, HVALS, HGETALL
  16. - PubSub : PUBLISH, SUBSCRIBE, UNSUBSCRIBE
  17. - Misc. : DISCARD, CONFIG
  18. * Introduced client-level options with the new Predis\ClientOptions class.
  19. Options can be passed to Predis\Client::__construct in its second argument
  20. as an array or an instance of Predis\ClientOptions. For brevity's sake and
  21. compatibility with older versions, the constructor of Predis\Client still
  22. accepts an instance of Predis\RedisServerProfile in its second argument.
  23. The currently supported client options are:
  24. - profile [default: "2.0" as of Predis 0.6.0]
  25. specifies which server profile to use when connecting to Redis. This
  26. option accepts an instance of Predis\RedisServerProfile or a string
  27. that indicates the target version.
  28. - key_distribution [default: Predis\Distribution\HashRing]
  29. specifies which key distribution strategy to use to distribute keys
  30. among the servers that compose a cluster. This option accepts an
  31. instance of Predis\Distribution\IDistributionStrategy so that users
  32. can implement their own key distribution strategy. Optionally, the new
  33. Predis\Distribution\KetamaPureRing class also provides a pure-PHP
  34. implementation of the same algorithm used by libketama.
  35. - throw_on_error [default: TRUE]
  36. server errors can optionally be handled "silently": instead of throwing
  37. an exception, the client returns an error response type.
  38. - iterable_multibulk [EXPERIMENTAL - default: FALSE]
  39. in addition to the classic way of fetching a whole multibulk reply
  40. into an array, the client can now optionally stream a multibulk reply
  41. down to the user code by using PHP iterators. It is just a little bit
  42. slower, but it can save a lot of memory in certain scenarios.
  43. * New parameters for connections:
  44. - alias [default: not set]
  45. every connection can now be identified by an alias that is useful to
  46. get a certain connection when connected to a cluster of Redis servers.
  47. - weight [default: not set]
  48. allows the client to balance the keys asymmetrically across multiple
  49. servers. This might be useful when you have servers with different
  50. amounts of memory and you want to distribute the load of your keys
  51. accordingly.
  52. - connection_async [default: FALSE]
  53. estabilish connections to servers in a non-blocking way, so that the
  54. client is not blocked while the underlying resource performs the actual
  55. connection.
  56. - connection_persistent [default: FALSE]
  57. the underlying connection resource is left open when a script ends its
  58. lifecycle. Persistent connections can lead to unpredictable or strange
  59. behaviours, so they should be used with extreme care.
  60. * Introduced the Predis\Pipeline\IExecutor interface. Classes implementing
  61. this interface are now used internally by the Predis\CommandPipeline class
  62. to change the behaviour of the pipeline when writing/reading commands from
  63. one or multiple servers. Here is the list of the default executors:
  64. - Predis\Pipeline\StandardExecutor
  65. Exceptions generated by server errors might be thrown depending on the
  66. options passed to the client (see "throw_on_error"). Instead, protocol
  67. or network errors always throw exceptions. This is the default executor
  68. for single and clustered connections and shares the same behaviour of
  69. Predis 0.5.x.
  70. - Predis\Pipeline\SafeExecutor
  71. Exceptions generated by server, protocol or network errors are not
  72. thrown, instead they are returned in the response array as instances of
  73. ResponseError or CommunicationException.
  74. - Predis\Pipeline\SafeClusterExecutor
  75. This executor shares the same behaviour of Predis\Pipeline\SafeExecutor
  76. but it is geared towards clustered connections.
  77. * Support for PUBSUB is handled by the new Predis\PubSubContext class, which
  78. could also be used to build a callback dispatcher for PUBSUB scenarios.
  79. * When connected to a cluster of connections, it is now possible to get a
  80. new Predis\Client instance for a single connection of the cluster by
  81. passing its alias/index to the new Predis\Client::getClientFor() method.
  82. * CommandPipeline and MultiExecBlock return their instances when invoking
  83. commands, thus allowing method chaining in pipelines and multi-exec blocks.
  84. * MultiExecBlock instances can handle the new DISCARD command.
  85. * Connections now support float values for the connection_timeout parameter
  86. to express timeouts with a microsecond resolution.
  87. * The GET parameter for the SORT command now accepts also multiple key
  88. patterns by passing an array of strings.
  89. v0.5.1 (2010-01-27)
  90. * RPOPLPUSH has been changed from bulk command to inline command in Redis
  91. 1.2.1, so ListPopLastPushHead now extends InlineCommand. The old RPOPLPUSH
  92. behavior is still available via the ListPopLastPushHeadBulk class so that
  93. you can override the server profile if you need the old (and uncorrect)
  94. behaviour when connecting to a Redis 1.2.0 instance.
  95. * Added missing support for BGREWRITEAOF for Redis >= 1.2.0
  96. * Implemented a factory method for the RedisServerProfile class to ease the
  97. creation of new server profile instances based on a version string.
  98. v0.5.0 (2010-01-09)
  99. * First versioned release of Predis