! s      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrSafe=?3redis:Utility class for conversion to and from Strict ByteStringSafe sSafe  redis subscribed redis unsubscribedredispattern subscribedredispattern unsubscribedredismessage recievedredismessage recieved by patternredisRedis reply variantsredisTimeout. Currently unusedredisAError converting value from ByteString. It's a client-side error.redis "Ok" replyredisReply for the ping commandredisUsed inside multi-exec blockredisSome kind of server-side errorredisSimple oneline replyredis Integer replyredisMultiline replyredis8Complex reply. It may consists of various type of replystredisRedis command variantsredisRedis connection descriptoruredishostname and port pairvrediscurrently selected databasewredisreal network connectionxrediscurrently in PUB/SUB modeyredismap of the renamed commands<  tz{|} ~yxvuwNone =>?@AC9!redisOptions data type for the  command#redissort with descending order$redisreturn (from, to) elements%redissort alphabetically&redissort by value from this key'redisreturn this keys values(redisstore result to this key-redisClass for conversion value to /Definied instances is:the Interval itselfpair (a,b) for open intervalatwo-member list [a, b] for closed interval (throws runtime error if the list length is different)/redisInterval representation0redisclosed interval [a, b]1redisopen interval (a, b)2redisleft-open interval (a, b]3redisright-open interval [a, b)>redisdefault Redis port?redisjust a localhost@redisLa (0, -1) range - takes all element from a list in lrange, zrange and so onAredisUnwraps RInline reply.EThrows an exception when called with something different from RInlineBredisUnwraps RBulk reply.CThrows an exception when called with something different from RBulkCredis/The same as fromRBulk but with fromJust appliedDredisUnwraps RMulti replyDThrows an exception when called with something different from RMultiEredis&Unwraps RMulti reply filled with RBulkDThrows an exception when called with something different from RMultiFredis4The same as fromRMultiBulk but with fromJust appliedGredisUnwraps RInt replyBThrows an exception when called with something different from RIntHredisUnwraps ROk replyAThrows an exception when called with something different from ROkIredisUnwraps every non-error replyDThrows an exception when called with something different from RMultiJredisParse Reply as a Message"Throws an exception on parse errorKredis9Conects to Redis server and returns connection descriptorLredisClose connectionMredis.Returns True when connection handler is openedNredis Returns connection host and portOredis#Returns currently selected databasePredisAdds command to renaming mapQredis ping - pong$RPong returned if no errors happendsRredisPassword authentication ROk returnedSredisEcho the given stringRBulk returnedTredisQuit and close connectionUredis7Stop all the clients, save the DB, then quit the serverVredisBegin the multi-exec block ROk returnedWredisExecute queued commands3RMulti returned - replies for all executed commandsXredis)Discard queued commands without execution ROk returnedYredis$Run commands within multi-exec block3RMulti returned - replies for all executed commandsZredis5Add keys to a watch list for Check-and-Set operation.For more information see #http://redis.io/topics/transactions ROk returned[redisForce unwatch all watched keysFor more information see #http://redis.io/topics/transactions ROk returned\redisRun actions in a CAS mannerYou have to explicitly add multi/exec commands to an appropriate place in an action sequence. Command sequence will be explicitly terminated with unwatch command even if exec command was sent.&Result of user-defined action returned]redisTest if the key exists:(RInt 1) returned if the key exists and (RInt 0) otherwise^redisRemove the keyM(RInt 0) returned if no keys were removed or (RInt n) with removed keys count_redisVariadic form of DEL&RInt returned - number of deleted keys`redis>Return the type of the value stored at key in form of a stringRedisKeyType returnedaredis4Returns all the keys matching the glob-style pattern!RMulti filled with RBulk returnedbredisReturn random key nameRBulk returnedcredisBRename the key. If key with that name exists it'll be overwritten. ROk returneddredis7Rename the key if no keys with destination name exists.;(RInt 1) returned if key was renamed and (RInt 0) otherwiseeredis9Get the number of keys in the currently selected database RInt returnedfredis:Set an expiration timeout in seconds on the specified key.For more information see http://redis.io/commands/expire;(RInt 1) returned if timeout was set and (RInt 0) otherwisegredisESet an expiration time in form of UNIX timestamp on the specified keyFor more information see !http://redis.io/commands/expireat;(RInt 1) returned if timeout was set and (RInt 0) otherwisehredisRemove the timeout from a keyC(RInt 1) returned if the timeout was removed and (RInt 0) otherwiseiredisSReturn the remining time to live of the key or -1 if key has no associated timeout RInt returnedjredis9Select the DB with the specified zero-based numeric index ROk returnedkredisMove the specified key from the currently selected DB to the specified destination DB. If such a key is already exists in the target DB no data modification performed.=(RInt 1) returned if the key was moved and (RInt 0) otherwiselredis0Delete all the keys of the currently selected DB ROk returnedmredis1Delete all the keys of all the existing databases ROk returnednredis=Returns different information and statistics about the serverfor more information see http://redis.io/commands/info  returnedoredis(Set the string value as value of the key ROk returnedpredis(Set the key value if key does not exists7(RInt 1) returned if key was set and (RInt 0) otherwiseqredisKAtomically sets target key value and assigns expiration time. The same as ,multi; set key val; expire key seconds; exec but faster.1Arguments order is the same as in Redis protocol. ROk returnedrredisAtomically set multiple keys ROk returnedsredis4Atomically set multiple keys if none of them exists.<(RInt 1) returned if all keys was set and (RInt 0) otherwisetredis#Get the value of the specified key.RBulk returneduredis2Atomically set this value and return the old valueRBulk returnedvredis$Get the values of all specified keys)RMulti filled with RBulk replies returnedwredisIncrement the key value by one RInt returned with new key valuexredisIncrement the key value by N RInt returned with new key valueyredisIncrement the key value by N*(RBulk Double) returned with new key valuezredisDecrement the key value by one RInt returned with new key value{redisDecrement the key value by N RInt returned with new key value|redis%Append string to the string-typed key.RInt returned - the length of resulting string}redisReturns the substring of the string value stored at key, determined by the offsets start and end (both are inclusive). Negative offsets can be used in order to provide an offset starting from the end of the string.RBulk returned~redisReturns the substring of the string value stored at key, determined by the offsets start and end (both are inclusive). Negative offsets can be used in order to provide an offset starting from the end of the string.RBulk returnedredisOverwrites part of the string stored at key, starting at the specified offset, for the entire length of value. If the offset is larger than the current length of the string at key, the string is padded with zero-bytes to make offset fit. Non-existing keys are considered as empty strings, so this command will make sure it holds a string large enough to be able to set value at offset.(RInt returned - resulting string length.redisMReturns the bit value at offset in the string value stored at key. When offset is beyond the string length, the string is assumed to be a contiguous space with 0 bits. When key does not exist it is assumed to be an empty string, so offset is always out of range and the value is also assumed to be a contiguous space with 0 bits. RInt returnedredis^Sets or clears the bit at offset in the string value stored at key. For more information see http://redis.io/commands/setbit8RInt returned - the original bit value stored at offset.redis&Returns a length of a string-typed key RInt returnedredisLAdd string value to the tail of the list-type key. New list length returned RInt returnedredisVariadic form of rpush RInt returnedredisLAdd string value to the head of the list-type key. New list length returned RInt returnedredisVariadic form of LPUSH RInt returnedredisAdd string value to the head of existing list-type key. New list length returned. If such a key was not exists, list is not created and (RInt 0) returned. RInt returnedredisAdd string value to the tail of existing list-type key. New list length returned. If such a key was not exists, list is not created and (RInt 0) returned. RInt returnedredisZInserts value in the list stored at key either before or after the reference value pivot.SRInt returned - resulting list length or (RInt -1) if target element was not found.redisSReturn lenght of the list. Note that for not-existing keys it returns zero length.,RInt returned or RError if key is not a listredisReturn the specified range of list elements. List indexed from 0 to (llen - 1). lrange returns slice including "from" and "to" elements, eg. lrange 0 2 will return the first three elements of the list.Parameters "from" and "to" may also be negative. If so it will counts as offset from end ot the list. eg. -1 - is the last element of the list, -2 - is the second from the end and so on.!RMulti filled with RBulk returnedredisGTrim list so that it will contain only the specified range of elements. ROk returnedredis5Return the specified element of the list by its indexRBulk returnedredis#Set the list's value indexed by an index to the new valueYROk returned if element was set and RError if index is out of range or key is not a listredisRemove the first count occurrences of the value element from the list.RInt returned - the number of elements removedredis:Atomically return and remove the first element of the listRBulk returnedredis9Atomically return and remove the last element of the listRBulk returnedredisAtomically return and remove the last (tail) element of the source list, and push the element as the first (head) element of the destination listRBulk returnedredis Blocking lpopFor more information see http://redis.io/commands/blpopReturn (Just (key, value)) if value was successfully popped from key% list or Nothing of timeout exceeded.redis Blocking rpopFor more information see http://redis.io/commands/brpopReturn (Just (key, value)) if value was successfully popped from key% list or Nothing of timeout exceeded.redisBlocking rpoplpushFor more information see #http://redis.io/commands/brpoplpush\Return (Just $ Maybe value) if value was successfully popped or Nothing if timeout exceeded.redis7Add the specified member to the set value stored at key_(RInt 1) returned if element was added and (RInt 0) if element was already a member of the setredisVariadic form of SADD0RInt returned - number of actualy added elementsredis<Remove the specified member from the set value stored at key\(RInt 1) returned if element was removed and (RInt 0) if element is not a member of the setredisVariadic form of SREM(RInt returned - number of removed valuesredis?Remove a random element from a Set returning it as return valueRBulk returnedredis2Move the specifided member from one set to anothera(RInt 1) returned if element was moved and (RInt 0) if element is not a member of the source setredisLReturn the number of elements of the set. If key doesn't exists 0 returned. RInt returnedredisHTest if element is member of the set. If key doesn't exists 0 returned.H(RInt 1) returned if element is member of the set and (RInt 0) otherwiseredis,Return all the members (elements) of the set!RMulti filled with RBulk returnedredis"Return a random element from a setRBulk returnedredisWReturn the members of a set resulting from the intersection of all the specifided sets!RMulti filled with RBulk returnedredis The same as ; but instead of being returned the resulting set is stored*RInt returned - resulting set cardinality.redisPReturn the members of a set resulting from the union of all the specifided sets!RMulti filled with RBulk returnedredis The same as ; but instead of being returned the resulting set is stored*RInt returned - resulting set cardinality.redisuReturn the members of a set resulting from the difference between the first set provided and all the successive sets!RMulti filled with RBulk returnedredis The same as ; but instead of being returned the resulting set is stored*RInt returned - resulting set cardinality.redisFAdd the specified member having the specifeid score to the sorted set(RInt 1) returned if new element was added and (RInt 0) if that element was already a member of the sortet set and the score was updatedredisVariadic form of zaddmRInt returned - the number of elements actually added. Not including elements which scores was just updated.redis/Remove the specified member from the sorted setd(RInt 1) returned if element was removed and (RInt 0) if element was not a member of the sorted setredisEVariadic form of zrem RInt returned - the number of removed elementsredisIf member$ already in the sorted set adds the  increment to its score and updates the position of the element in the sorted set accordingly. If member does not exist in the sorted set it is added with increment as score (that is, like if the previous score was virtually zero). The new score of the member is returned.RBulk returnedredis Return the specified elements of the sorted set. Start and end are zero-based indexes. WITHSCORES paramenter indicates if it's needed to return elements with its scores or not. If WITHSCORES is True then the resulting list will be composed of value1, score1, value2, score2 and so on.!RMulti filled with RBulk returnedredisReturn the specified elements of the sorted set at the specified key. The elements are considered sorted from the highest to the lowerest score!RMulti filled with RBulk returnedredis]Return the all the elements in the sorted set with a score that lays within a given interval!RMulti filled with RBulk returnedredisReturn the all the elements in the sorted set with a score that lays within a given interval. Elements is ordered from greater score to lower. Interval passed into command must be reversed (first value is greater then second)!RMulti filled with RBulk returnedredis\Count a number of elements of the sorted set with a score that lays within a given interval RInt returnedredisRemove all the elements in the sorted set with a score that lays within a given interval. For now this command doesn't supports open and semi-open intervals.RInt returned - the number of elements removedredis6Return the sorted set cardinality (number of elements) RInt returnedredis;Return the score of the specified element of the sorted setRBulk returnedredisfReturns the rank of member in the sorted set stored at key, with the scores ordered from low to high.>RInt returned or (RBulk Nothing) if value is not found in set.redisfReturns the rank of member in the sorted set stored at key, with the scores ordered from high to low.>RInt returned or (RBulk Nothing) if value is not found in set.redisLRemove elements from the sorted set with rank lays within a given interval..RInt returned - the number of elements removedredis7Create a union of provided sorted sets and store it at  destination keyIf weightsZ is not null then scores of sorted sets used with corresponding weights. If so lenght of weights must be the same as length of sources. Aggregate0 is an option how to aggregate resulting scores.<RInt returned - the number of elements in the resulting set.redisNCreate an intersectoin of provided sorted sets and store it at destination keyIf weightsZ is not null then scores of sorted sets used with corresponding weights. If so lenght of weights must be the same as length of sources.9Aggregate is an option how to aggregate resulting scores.<RInt returned - the number of elements in the resulting set.redis3Set the specified hash field to the specified valueM(RInt 0 returned if field value was updated and (RInt 1) if new field createdredis6Return value associated with specified field from hashRBulk returnedredisRemove field from a hash=(RInt 1) returned if field was removed and (RInt 0) otherwiseredisVariadic form of HDEL(RInt returned - number of fields deletedredis7Atomically sets multiple fields within a hash-typed key ROk returnedredis>Get the values of all specified fields from the hash-typed key)RMulti filled with RBulk replies returnedredis,Increment the field value within a hash by N RInt returned with new key valueredis,Increment the field value within a hash by N*(RBulk Double) returned with new key valueredis)Test if hash contains the specified field8(RInt 1) returned if fiels exists and (RInt 0) otherwiseredis;Return the number of fields contained in the specified hash RInt returnedredis+Return all the field names the hash holding RMulti field with RBulk returnedredis1Return all the associated values the hash holding RMulti field with RBulk returnedredisNReturn all the field names and associated values the hash holding in form of #[field1, value1, field2, value2...]MRMulti field with RBulk returned. If key doesn't exists (RMulti []) returned.redisDefault options for the  commandredis;Sort the elements contained in the List, Set, or Sorted Setfor more information see http://redis.io/commands/sort!RMulti filled with RBulk returnedredisShortcut for the  with some ' and constant & options!RMulti filled with RBulk returnedredis6Get a number of subscribed channels on this connectioncIt doesn't run any redis commands, number of subscribtions is taken from internal connection stateredisSubscribe to channels6list of Message with subscribtion information returnedredisVUnsubscribe from channels. If called with an empty list then unsubscribe all channels6list of Message with subscribtion information returnedredisSubscribe to patterns6list of Message with subscribtion information returnedredisVUnsubscribe from patterns. If called with an empty list then unsubscribe all patterns6list of Message with subscribtion information returnedredis!Publish message to target channel=RInt returned - a number of clients that recieves the messageredisWait for a messages.4Just Message returned or Nothing if timeout exceededredisSave the whole dataset on disk ROk returnedredisSave the DB in background ROk returnedredis>Return the UNIX TIME of the last DB save executed with success RInt returnedredis+Rewrites the Append Only File in background ROk returnedrediscTwo-element list [a, b] converted to closed interval. No static checking of list length performed.redis&Pair (a, b) converted to open intervalredisTrivial IsInterval instancemKredis$hostname or path to the redis socketredis!port or null if unix sockets usedPrediscommand to renameredisnew nameRredispasswordSredis what to echoYredisIO action to runZrediskeys to watch for\redis keys watchedredis action to run]redis target key^redis target key_redistarget keys list`redis target keyaredistarget keys patterncredis source keyredisdestination keydredis source keyredisdestination keyfredis target keyredistimeout in secondsgredis target keyredisexpiration timehredis target keyiredis target keyjredisdatabase numberkredis target keyredisdestination database numberoredis target keyredisvaluepredis target keyredisvalueqredis target keyredistimeout in secondsredisvaluerredis(key, value) pairssredis(key, value) pairstredis target keyuredis target keyredisvaluevredis target keyswredis target keyxredis target keyredis incrementyredis target keyredis incrementzredis target key{redis target keyredis decrement|redis target keyredisvalue}redis target keyredis (start, end)~redis target keyredis (start, end)redis target keyredisoffsetredisvalueredis target keyredis bit offsetredis target keyredis bit offsetredisbit value - 0 or 1redis target keyredis target keyredisvalueredis target keyredis values listredis target keyredisvalueredis target keyredis values listredis target keyredis value to pushredis target keyredis value to pushredis target listredis!where to insert - before or afterredistarget elementredisinserted valueredis target keyredis target keyredis(from, to) pairredis target keyredis(from, to) pairredis target keyredisindexredis target keyredisindexredis new valueredis target keyredis occurrencesredisvalueredis target keyredis target keyredis source keyredisdestination keyredis keys listredistimeoutredis keys listredistimeoutredis source keyredisdestination keyredistimeoutredis target keyredisvalueredis target keyredis values listredis target keyredisvalueredis target keyredis values listredis target keyredis source keyredisdestination keyredisvalueredis target keyredis target keyredis value to testredis target keyredis target keyredis keys listrediswhere to store resulting setredis sets listredis keys listrediswhere to store resulting setredis sets listredis keys listrediswhere to store resulting setredis sets listredis target keyredisscoreredisvalueredis target keyredislist of score-value pairsredis target keyredisvalueredis target keyredis values listredis target keyredis incrementredisvalueredis target keyredis(from, to) pairrediswithscores optionredis target keyredis(from, to) pairrediswithscores optionredis target keyredisscores intervalredislimits (offset, count)rediswithscores optionredis target keyredisscores intervalredis target keyredisM(from, to) pair. zremrangebyscore currently doesn't supports open intervalsredis target keyredis target keyredisvalueredis target keyredisvalueredis target keyredisvalueredisdestination keyredis sources keysredisweightsredis aggregateredisdestination keyredis sources keysredisweightsredis aggregateredis target keyredis field nameredisvaluerediskeyredis field namerediskeyredis field namerediskeyredis field nameredis target keyredis(field, value) pairsredis target keyredis field namesredis target keyredis field nameredis incrementredis target keyredis field nameredis incrementrediskeyredis field nameredis target keyredis target keyredisoptionsredis related keyredis index keyredisrangeredischannels to subscriberedischannels to unsubscriberedispatterns to subscriberedispatterns to unsubscriberedischannelredismessageredistimeout !"$#%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 456/0123-.!"$#%&'()*+,789:;<= ABCDEFGHIJ@?>KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None>W  !"$#%&'()*+,-./01234567>?@ABDEFGHIJ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg  456/0123-.!"$#%&'()*+,7 ABDEFGHIJ@?>      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIKMJLNOPQRSTUVWXYZ[\]^_`abcdefgNone=?WOhredis=Trivial WithRedis instance storing Redis descriptor in StateThihiNonekredisAcquire lock. This function is not reentrant so thread can be locked by itself if it try to acquire the same lock before it was released.lredis:acquire with default last parameter set to 50 millisecondsmredis>Try to acquire lock once and return result without any timeoutnredisuRelease lock. There is no any guarantees that lock was acquired in this thread. Just release this lock and go forth.kredisThe lock's nameredisTimeout in milliseconds.redis)Time interval between attempts to lock onredisTrue if lock was acquiredklmnklmnNonetopqropqr      !"#$%&&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     #redis-0.14.2-4nIGYumm8Ld55f9XQXaBQuDatabase.Redis.ByteStringClassDatabase.Redis.RedisDatabase.Redis.MonadDatabase.Redis.Monad.StateDatabase.Redis.Utils.LockDatabase.Redis.Utils.Monad.LockDatabase.Redis.InfoDatabase.Redis.InternalBStoBSfromBS$fBS() $fBSDouble$fBSInt$fBS[]$fBSChar$fBSByteString$fBSByteString0 RedisInfoMessage MSubscribe MUnsubscribe MPSubscribe MPUnsubscribeMMessage MPMessageReplyRTimeout RParseErrorROkRPongRQueuedRErrorRInlineRIntRBulkRMultiRedisr_lockr_st SortOptionsdesclimitalphasort_byget_objstore AggregateSUMMINMAX IsInterval toIntervalIntervalClosedOpenLeftOpen RightOpenLInsertDirectionBEFOREAFTER RedisKeyTypeRTNoneRTStringRTListRTSetRTZSetRTHash defaultPort localhosttakeAll fromRInline fromRBulk fromRBulk' fromRMultifromRMultiBulkfromRMultiBulk'fromRIntfromROknoError parseMessageconnect disconnect isConnected getServer getDatabase renameCommandpingauthechoquitshutdownmultiexecdiscard run_multiwatchunwatchrun_casexistsdeldel_getTypekeys randomKeyrenamerenameNxdbsizeexpireexpireAtpersistttlselectmoveflushDbflushAllinfosetsetNxsetExmSetmSetNxgetgetSetmGetincrincrBy incrByFloatdecrdecrByappendsubstrgetrangesetrangegetbitsetbitstrlenrpushrpush_lpushlpush_lpushxrpushxlinsertllenlrangeltrimlindexlsetlremlpoprpop rpoplpushblpopbrpop brpoplpushsaddsadd_sremsrem_spopsmovescard sismembersmembers srandmembersinter sinterStoresunion sunionStoresdiff sdiffStorezaddzadd_zremzrem_zincrByzrange zrevrange zrangebyscorezrevrangebyscorezcountzremrangebyscorezcardzscorezrankzrevrankzremrangebyrank zunionStorezunion zinterStorezinterhsethgethdelhdel_hmsethmgethincrBy hincrByFloathexistshlenhkeyshvalshgetall sortDefaultssort listRelated subscribed subscribe unsubscribe psubscribe punsubscribepublishlistensavebgsavelastsave bgrewriteaof$fIsInterval[]a$fIsInterval(,)a$fIsIntervalIntervala$fShowRedisKeyType$fEqRedisKeyType$fShowLInsertDirection$fShowInterval $fEqAggregate$fShowAggregate WithRedisgetRedissetRedisRedisM runWithRedis$fWithRedisStateTacquireacquire' acquireOncerelease parseInfoCommandserverdatabasehandle isSubscribedrenamedCommandsCMBulkCBulkCMInlineCInline RedisStateblocktracebstracebs'newRedisshowbsurnuspaceuminusuplusucolonubucks uasteriskhPutRn takeStateputStateputStateUnmodifiedinStateinState_ withState withState'send lookupRenamed sendCommand sendCommand'recvwait