Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-05-06SUBSCRIBE/PSUBSCRIBEmichael-grunder
Implemented SUBSCRIBE and PSUBSCRIBE for Redis Cluster. Currently Cluster will send publish messages to every node, so we can subscribe wherever we like.
2015-05-06UNWATCH command.michael-grunder
Added the UNWATCH command which will deliver this command only to nodes that we think we're watching.
2015-05-06WATCH commandmichael-grunder
Implemented the WATCH command for RedisCluster. This command can take any number of keys, so phpredis splits the request across the cluster in the best way it can. For every key in a multiple key command, Redis Cluster requires that they all hash to the same SLOT, else it will return a CROSSLOT error and fail. For WATCH in RedisCluster, a few things to note: * The command will fail if phpredis is out of sync with the keyspace. This is because we'll need to know where to deliver each command, or can't possibly deliver them correctlhy. * The command will fail if any command delivery failures occur on any node. This is the case either for a normal communication error or if RedisCluster returns to us MOVED/ASK redirection.
2015-05-06DISCARD command, better cleanup.michael-grunder
Implemented our DISCARD command for RedisCluster Added a mechanism where we can free any context we have (which is currently always a zval** array for HMGET arguments), even if we manually DISCARD the transaction OR if the transactino were to actually fail.
2015-05-06Fixed HMGET, more MULTI supportmichael-grunder
Fixed HMGET so we don't leak memory when getting members that don't exist. Added a call to CLUSTER_RESET_MULTI() at the end of our EXEC function, so afterwards we're not in MULTI mode.
2015-05-06Transaction supportmichael-grunder
This is the initial commit supporting transactions in RedisCluster via MULTI..EXEC. Given that the data can be distributed across many nodes, we accomplish transactions as follows. 1. When entering MULTI mode, the cluster context state is changed to MULTI 2. When we send a command to a node, we check that node's RedisSock state, and if it's still ATOMIC, deliver the MULTI command, updating the node's state to MULTI. 3. When reading replies, we check if the RedisSock* is in a MULTI state, which means we need to issue the EXEC command. We do this and then flip the state back to ATOMIC. 4. On completion, everything is reverted to ATOMIC state and our reply callbacks are freed and set to NULL. For transactions, we enforce writes such that they MUST be able to be processed by the node in question (e.g. they can't work during a reshard, because there is no way to know what has failed, etc). This is the same as RedisCluster which will also cancel transactions in the case where a request was made for data that is somewhere else.
2015-05-06Introspection commandsmichael-grunder
Implemented various introspection/option commands for both Redis and RedisCluster. Commands implemented: * getOption * setOption * _prefix * _serialize * _unserialize With these implemented, we can properly test RedisCluster with things like serialization and prefixing turned on.
2015-05-06Implemented set aggregation methods for Redis and Clustermichael-grunder
Implemented the various set aggregation functions and store variations for both Redis and RedisCluster in a generic way. * SUNION * SUNIONSTORE * SINTER * SINTERSTORE * SDIFF * SDIFFSTORE
2015-05-06Fix memory leak, inc arg countmichael-grunder
Properly free allocated z_args array, as well as increment our argc value in the case of a single array + timeout command.
2015-05-06OBJECT commandmichael-grunder
Implemented the OBJECT command for both Redis and Redis Cluster
2015-05-06ZADD commandmichael-grunder
Implemented ZADD command for both Redis and RedisCluster
2015-05-06HDEL commandmichael-grunder
Implemented HDEL command for both Redis and RedisCluster objects
2015-05-06ZREMmichael-grunder
Added ZREM for both cluster and redis proper
2015-05-06SADD/SREMmichael-grunder
Implemented SADD and SREM for both Redis proper and cluster
2015-05-06Added command generic, LPUSH/RPUSHmichael-grunder
Added a generic command routine where we take a key and then a variable number of arguments. This works for stuff like LPUSH, RPUSH, SADD, SREM, and the like... Implemented LPUSH/RPUSH
2015-05-06ZUNIONSTORE/ZINTERSTOREmichael-grunder
Implemented ZUNIONSTORE and ZINTERSTORE in a generic way that works for both cluster and Redis proper.
2015-05-06ZRANGEBYSCORE/ZREVRANGEBYSCOREmichael-grunder
Implemented ZRANGEBYSCORE and ZREVRANGEBYSCORE in the new way for both Redis and RedisCluster objects. In addition, ZRANGE and ZREVRANGE handling is nearly identical to "BYSCORE" variants, so made this generic.
2015-05-06SORT commandmichael-grunder
Implemented SORT command in a new way (using a zval array to construct each argument, then creating the command from that), as well as updated Redis proper and RedisCluster to use it.
2015-05-06ZINCRBYmichael-grunder
Implemented ZINCRBY command
2015-05-06SRANDMEMBERmichael-grunder
Implemented SRANDMEMBER command for Redis and RedisCluster
2015-05-06HSET/HSETNXmichael-grunder
Implemented HSET and HSETNX commands
2015-05-06Added ZRANGE and ZREVRANGEmichael-grunder
Implemented ZRANGE and ZREVRANGE for both Redis and cluster. We can't use generic command processing here as the return type depends on the optional WITHSCORES bit. In addition, switched the code around such that zReverseRange is an alias of zRevRange because ZREVRANGE is the actual Redis command name.
2015-05-06SMOVEmichael-grunder
Implemented SMOVE command
2015-05-06LREMmichael-grunder
Implemented LREM command
2015-05-06LINSERTmichael-grunder
Implemented LINSERT command
2015-05-06SETBITmichael-grunder
Implemented SETBIT command
2015-05-06SETRANGE/RESTOREmichael-grunder
Implemented SETRANGE and RESTORE commands, which both take the prototype key, long, string
2015-05-06Properly handle RANDOMKEY, PFADD/PFMERGEmichael-grunder
Fixed a compile bug where we were invoking the empty command RANDOMKEY improperly. Added PFMERGE and PFCOUNT to redis and RedisCluster objects
2015-05-06RANDOMKEY/PFCOUNTmichael-grunder
Changed RANDOMKEY to use our empty command semantics, as well as implemented PFCOUNT for both Redis and Cluster
2015-05-06BITPOS/BITCOUNT/BITOP, formatting, etcmichael-grunder
Commit the rest of our "empty" commands semantics Implemented BITOP/BITPOS/BITCOUNT commands for both Redis and RedisCluster
2015-05-06Added context, HMGET/HMSETmichael-grunder
Added context void pointer that we pass around, which is (thus far) really just for hmget (as we need to keep the keys around to bind them with the returned values). This requires every command construction routine and each response callback be passed this void pointer, which is always NULL except for HMGET Added HMGET and HMSET commands
2015-05-06HMSET, with command handlermichael-grunder
2015-05-06ZCOUNT/ZREMRANGEBYSCOREmichael-grunder
2015-05-06HINCRBYFLOATmichael-grunder
2015-05-06HINCRBYmichael-grunder
2015-05-06Implemented HSET commandmichael-grunder
2015-05-06Actually add RPOPLPUSH and BRPOPLPUSH into clustermichael-grunder
2015-05-06RENAME, RENAMENXmichael-grunder
For now we're pre-processing each key to determine if they all live in the same place. This might change for commands that could take very large numbers of keys
2015-05-06More commands, updated redis proper to use genericsmichael-grunder
* Make key, long val generic * Update lset to use new style * Added PUBLISH commnad
2015-05-06PUBLISH commandmichael-grunder
2015-05-06HEXISTS/HGETALLmichael-grunder
Also removed deprecated generic functions in Redis proper
2015-05-06GETRANGE/LRANGE/LTRIM/ZREMRANGEBYRANKmichael-grunder
2015-05-06Rework naming convention for command constructionmichael-grunder
2015-05-06APPEND commandmichael-grunder
2015-05-06Removed deprecated functions, implemented expiresmichael-grunder
Removed redis_atomic_increment, and generic_expire_command Added EXPIRE/EXPIREAT/PEXPIRE/PEXPIREAT
2015-05-06Fixed cluster_long_resp and added increment/decrement commandsmichael-grunder
We were using RETURN_TRUE instead of RETURN_LONG in cluster_long_resp, which was wrong. Added/tested INCR/DECR/INCRBY/DECRBY/INCRBYFLOAT
2015-05-06HGETALL/INCR/INCRBY/DECR/DECRBYmichael-grunder
Added zipstr handler for k,v,k2,kv to k=>v,k2=>v2 as well as implemented int based incr and decr commands.
2015-05-06ZRANK/ZREVRANKmichael-grunder
2015-05-06SISMEMBER, fix SMEMBERS proto typomichael-grunder
2015-05-06HKEYS/HVALSmichael-grunder