Coder Social home page Coder Social logo

redis's People

Stargazers

 avatar  avatar

Watchers

 avatar

redis's Issues

Bug in docs

Hi. There's a little bug in command reference. INCR command documented
twise, although the second one should be DECR. :)

Original issue reported on code.google.com by [email protected] on 16 Apr 2009 at 5:09

Pushing strings to lists

I'm your nightmare. :)

There's a discrepancy in the way you set a value for a key (set <length of
the string>) and push a value to a list (rpush <value>). The first way
allows you to set strings that contain \r\n, the second one does not. It
seems counterintuitive and prone to errors. Any ideas on this?

Original issue reported on code.google.com by [email protected] on 27 Feb 2009 at 2:05

Response bytesize is returned as $<size>

What steps will reproduce the problem?
jcarouth@jcarouth-laptop:~/workspace/Carouth_Redis/tests> telnet localhost 6379
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SET foo 3
bar
+OK
GET foo
$3
bar


What is the expected output? What do you see instead?
Expected
--------------
3
bar

Actual
--------------
$3
bar

What version of the product are you using? On what operating system?
0.096
Linux jcarouth-laptop 2.6.27.21-0.1-pae #1 SMP 2009-03-31 14:50:44 +0200
i686 i686 i386 GNU/Linux


Additional Information
I am not sure if this is a bug or not, but the documentation and example
PHP client assumes the $ is not present.


Original issue reported on code.google.com by [email protected] on 10 May 2009 at 3:24

Redis benchmark needed

I think we really need a benchmark script for Redis able to measure both
latency percentiles and queries/seconds with different number of clients.
There are at least two important reasons for having it: without a good
benchmark it is very hard to try a coding effort with the goal of improving
Redis performances now or in the future, and it is very hard to tell from a
release to another one if changed has some kind of impact on performances.

This need arise in this days because I'm reworking a lot the Redis
internals in order to use everywhere refcounted objects. This will be a
very important step in order to make the code more coherent and well
designed and to support zero-copy master <-> slave communication channel
when replication will be implemented. From what I can tell sometimes to
have keys in Redis objects is a win, but some other time just an overhead.
A benchmark can tell what's the reality!

Original issue reported on code.google.com by [email protected] on 3 Mar 2009 at 10:47

Segmentation fault when saving large datasets 500 MB

Here is what happens:

I have a large dataset, over 500 MB and growing. But when the dataset reaches 
the size of 
approximately 500MB, it stops dumping the data (dump.rdb not being updated). 
When the 
second redis-server thread (is it a process?) dumps the data periodically, it 
never completes and 
the following error is presented on the console. Redis continues to work 
however.

Moreover, when I try to manually tell redis to save synchronously (redis-cli 
save), it aborts with 
the following backtrace too.

. DB 0: 1605703 keys (0 volatile) in 2097152 slots HT.
. 1 clients connected (0 slaves), 556856524 bytes in use

*** glibc detected *** ./redis-server: free(): invalid next size (fast): 
0x2ea7a9c8 ***
======= Backtrace: =========
/lib/tls/i686/nosegneg/libc.so.6[0x1f5274]
/lib/tls/i686/nosegneg/libc.so.6(cfree+0x96)[0x1f7296]
./redis-server[0x804f573]
./redis-server[0x80518e5]
./redis-server[0x8051d0d]
./redis-server[0x804d9df]
./redis-server[0x805125a]
./redis-server[0x8049f41]
./redis-server[0x804a118]
./redis-server[0x8050e01]
/lib/tls/i686/nosegneg/libc.so.6(__libc_start_main+0xe5)[0x19b775]
./redis-server[0x80493b1]
======= Memory map: ========
00184000-00185000 r-xp 00184000 00:00 0          [vdso]
00185000-002e4000 r-xp 00000000 08:01 475463     
/lib/tls/i686/nosegneg/libc-2.9.so
002e4000-002e5000 ---p 0015f000 08:01 475463     
/lib/tls/i686/nosegneg/libc-2.9.so
002e5000-002e7000 r--p 0015f000 08:01 475463     
/lib/tls/i686/nosegneg/libc-2.9.so
002e7000-002e8000 rw-p 00161000 08:01 475463     
/lib/tls/i686/nosegneg/libc-2.9.so
002e8000-002eb000 rw-p 002e8000 00:00 0
0035a000-00367000 r-xp 00000000 08:01 467098     /lib/libgcc_s.so.1
00367000-00368000 r--p 0000c000 08:01 467098     /lib/libgcc_s.so.1
00368000-00369000 rw-p 0000d000 08:01 467098     /lib/libgcc_s.so.1
005ba000-005d6000 r-xp 00000000 08:01 467078     /lib/ld-2.9.so
005d6000-005d7000 r--p 0001b000 08:01 467078     /lib/ld-2.9.so
005d7000-005d8000 rw-p 0001c000 08:01 467078     /lib/ld-2.9.so
08048000-08056000 r-xp 00000000 08:02 18661558   
/mnt/redis/redis-0.092/redis-server
08056000-08057000 r--p 0000d000 08:02 18661558   
/mnt/redis/redis-0.092/redis-server
08057000-08058000 rw-p 0000e000 08:02 18661558   
/mnt/redis/redis-0.092/redis-server
08da4000-2ea8f000 rw-p 08da4000 00:00 0
b6fc6000-b77c7000 rw-p b6fc6000 00:00 0
b7d00000-b7d21000 rw-p b7d00000 00:00 0
b7d21000-b7e00000 ---p b7d21000 00:00 0
b7e2b000-b7f2c000 rw-p b7e2b000 00:00 0
b7fad000-b7fae000 rw-p b7fad000 00:00 0
b7fb0000-b7fb5000 rw-p b7fb0000 00:00 0
bfd0d000-bfd53000 rw-p bfd0d000 00:00 0          [stack]
Aborted

The same behaviour have been noticed on redis 0.092 and 0.091, on both MacOS X 
(Leopard) 
and Ubuntu 9.04, both 32bit. I will try to run the system on a 64bit platform 
too.

I hope this can be resolved. Good luck!

Michal


Original issue reported on code.google.com by [email protected] on 28 Apr 2009 at 8:48

php client error

latest version of php client library for redis gives error msg, while older
version works perfectly fine


Original issue reported on code.google.com by [email protected] on 22 May 2009 at 7:43

Sort issues

I just added support for the sort command (and a bunch of other stuff) to
the Python client, but there are a couple of issues.

The first one is that DESC does not appear to work, everything is ordered
with an implicit DESC (the opposite of what is stated in the docs) and ASC
does nothing.

The second one is that if you use SEARCH ... BY ... without having enough
keys/value pairs to GET for each element, the error returned is an empty
string instead of a description of what happened.

Original issue reported on code.google.com by [email protected] on 17 Mar 2009 at 3:02

Memcached's FLUSH_ALL command to empty the DB

Hello.

Are you planning to add a flush command, to empty the database? Flushing
the cache from a client is something that memcached provides.

Listing all the keys and removing them is not atomic and can take a while
in the case of a large database.

Thanks.

Original issue reported on code.google.com by [email protected] on 12 Mar 2009 at 4:17

Erlang client

I'm still finishing it but 90% of the documented API is covered and it should 
be a trivial matter since 
the protocol parser is complete.

You can find it here: http://bitbucket.org/adroll/erldis/

If you want to thank someone on the front page please say also that I work for 
adroll (which 
basically paid for my day today) :).

HTH - Valentino Volonghi

grazie :)

Original issue reported on code.google.com by [email protected] on 28 Feb 2009 at 2:03

Feature wished : lset, when 'out of range' occurs, creates the missing elements

Thanks for the good job on Redis.

It is very useful if the lset behaviour change a little bit, as followings:

Say, i lset somekey 8 somevalue,
Now, if the key has less than 8 elements, it returns 'out of range'.

Suggestion: add an option: when this error occurs, creates the missing
element(s) with a empty string.

For example:
currently, there is 3 elements in 'somekey', so Redis create, atomically,
the 4th to 7th elements with empty string, and the 8th element with
'somevalue'.

Possible Usage:
it seems like a row of data, 'somekey' is the primary key, the elements are
the fields. Without the suggested option, i find it hard to fill up the
list in order by rpush one by one.
With the suggest option, i can freely assign and/or get data to/from each
field.

Sorry, i couldn't find anywhere to post the feature wished. if any, pls
tell me.

Original issue reported on code.google.com by [email protected] on 6 Jul 2009 at 6:52

nokey By - what is the meaning?

I noticed in the tcl test script that you call sort with a By of nokey. Is
'nokey' a special keyword to indicate that the By is meaningless or is
there some other meaning?

Thanks.

Original issue reported on code.google.com by [email protected] on 5 Jul 2009 at 6:51

Bug: vsnprintf causes segfault during 'make test' (with patch)

What steps will reproduce the problem?

1. svn checkout http://redis.googlecode.com/svn/trunk/ redis-read-only  
2. make
3. ./redis-server in one terminal, 'make test' in the other

What is the expected output? What do you see instead?

Expected: Tests to pass =)

Get instead:

server segfaults with stack trace:

Thread 1 (process 12396):
#0  0x00007f4fc73ea7b0 in strlen () from /lib/libc.so.6
No symbol table info available.
#1  0x00007f4fc73b347e in vfprintf () from /lib/libc.so.6
No symbol table info available.
#2  0x00007f4fc7464d18 in __vsnprintf_chk () from /lib/libc.so.6
No symbol table info available.
#3  0x0000000000408920 in sdscatprintf (s=0x17d4390 "", fmt=0x40a523
"%d\r\n%s\r\n") at /usr/include/bits/stdio2.h:78
    ap = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fffcf8f86d0,
reg_save_area = 0x7fffcf8f85e0}}
    t = <value optimized out>
    buflen = 64
#4  0x00000000004059c8 in lindexCommand (c=0x1640820) at redis.c:1741
    o = <value optimized out>
    de = <value optimized out>
#5  0x0000000000404323 in processCommand (c=0x1640820) at redis.c:848
    cmd = (struct redisCommand *) 0x60e480
#6  0x0000000000406de4 in readQueryFromClient (el=<value optimized out>,
fd=<value optimized out>, privdata=0x1640820, mask=<value optimized out>)
    at redis.c:922
    argv = (sds *) 0x17bd0a0
    argc = 3

client says:

LINDEX against non-list value error                                   
argument to math function didn't have numeric value
    while executing
"expr {abs($count)}"
    (procedure "redis_bulk_read" line 4)
    invoked from within
"redis_bulk_read $fd"
    (procedure "redis_lindex" line 3)
    invoked from within
...
} else {
    main [lindex $argv 0] [lindex $argv 1]
}"
    (file "test-redis.tcl" line 643)
make: *** [test] Error 1

What version of the product are you using? On what operating system?

URL: http://redis.googlecode.com/svn/trunk
Revision: 46

Linux bboxl 2.6.27-11-generic #1 SMP Thu Jan 29 19:28:32 UTC 2009 x86_64
GNU/Linux

Please provide any additional information below.

Patch attached for sds.c

man vsnprintf
"These functions do not call the va_end macro. Consequently, the value of
ap is undefined after the call. The application should call va_end(ap)
itself afterwards."

Original issue reported on code.google.com by [email protected] on 3 Mar 2009 at 6:02

Attachments:

Errno::EAGAIN: Resource temporarily unavailable


Using a constant batch and a website polling on the content gives this:



/lib/redis.rb:437:in `get_response': #<Errno::EAGAIN: Resource temporarily
unavailable> (RedisError)
    from ./lib/redis.rb:192:in `get'
    from ./lib/redis.rb:187:in `[]'

I'm on a Virtual Machine but dowsn't seem to be a memory problem:

             total       used       free     shared    buffers     cached
Mem:        786432     123196     663236          0          0          0
-/+ buffers/cache:     123196     663236
Swap:            0          0          0



Original issue reported on code.google.com by [email protected] on 19 May 2009 at 8:26

Numeric error codes break the protocol

Consider this

-> RPUSH l 3
-> aaa
<- +OK
-> SET i -42
<- +OK
-> GET l
<- -42
<- GET against key not holding a string value
-> GET i
<- -42

How can you differentiate the error message in the client returned by "GET
l" from the value returned by "GET b"?

You cannot inspect the next line, as in the case of "GET b" the socket
would block as there's nothing more to read.

I think you should change error messages so that they have always a first
line with

-ERR

then if you still want to return an error code, you can stuff that in the
second line, before the error message. It will be trivial to split the
second line and try to cast the first token to int to check if it's an
error code.

Then write in the docs that storing '-ERR\r\nSome stuff here\r\n' will
never return that as a value but as an error message.

Original issue reported on code.google.com by [email protected] on 2 Mar 2009 at 9:40

Please add option to daemonise (and write to pid to pidfile, etc.)

For 1.0, I wonder if you could implement--as an option--to double-fork(2)
etc. and write the new pid to a file specified in the config file.

This makes writing init scripts much less error-prone, as not only do we
not need to use a helper utility to fork(2) for us, we can actually detect
whether redis-server started successfully by testing for contents of the
pidfile.

I understand that redis is in beta, but it would certainly be nice to have
this for 1.0. I could prepare a patch for this; let me know if that would
be helpful.

Original issue reported on code.google.com by [email protected] on 8 Mar 2009 at 2:52

randomkey on empty db causes bus error on server and destroys existing data that has not been saved

What steps will reproduce the problem?
1. select an empty db (e.g. "select 9")
2. (not necessary to reproduce:  issue keys command to insure db is in fact 
empty $0 result)
3. issue randomkey

What is the expected output? What do you see instead?
server will crash.  

on server terminal:

..
. DB 0: 1 keys (0 volatile) in 16 slots HT.
. 1 clients connected (0 slaves), 2964 bytes in use
Bus error


What version of the product are you using? On what operating system?
redis:
Git download April 07 2009
"antirez-redis-05557f6de7fd7a4ae29614ae2cde78cd08ebd1b9"

os:
Mac OS X 10.5

Please provide any additional information below.

If the server has not saved any data you added in your session, regardless of 
the db, issuing 
randomkey in the empty db will also cause the loss of keys in other dbs.  
Issuing SAVE before 
doing this however will guard against that. 

Original issue reported on code.google.com by [email protected] on 7 Apr 2009 at 10:45

Python client

No docs yet, and only the minimal tests needed to make sure it works.

Original issue reported on code.google.com by [email protected] on 27 Feb 2009 at 3:13

Attachments:

help with installation

I recently downloaded redis-beta-8.tar.gz on my ubuntu.. but im no
tfamiliar with installation. the readme file does not really describe how
to get started with redis(installation of the redis server).

I hope someone can help with this.

Original issue reported on code.google.com by [email protected] on 7 Apr 2009 at 9:55

Namespace consistency : push

Currently: lpush, rpush
Suggest: all list-related methods(e.g. in redis.php) started with the
letter 'l'.
So,
lpush becomes llpush or lprepend
rpush becomes lrpush or lappend

BTW, should change the clpush and crpush accordingly.
And, merely 'push' is mis-leading, as if it is of string operation.

Original issue reported on code.google.com by [email protected] on 6 Jul 2009 at 7:06

Typos in README.text

Credo che se ti mando una mail non la leggi. :)

Allego un piccolo diff dei typo che ho trovato leggendo il README.

L.

Original issue reported on code.google.com by [email protected] on 26 Feb 2009 at 10:51

Attachments:

Le risposte a EXISTS, LASTSAVE, LLEN ecc. rendono difficile il parsing bulk delle risposte

Mi sbaglierò, ma il modo con cui viene risposto ai comandi EXISTS,
LASTSAVE, LLEN ecc. rende un po' complicato fare il parsing delle risposte
bulk, slegato dalle richieste.

MI spiego meglio: le risposte del server sono di tre tipi (almeno per
quanto ho capito fino ad ora)

* una risposta che inizia con uno status +XXX (PING, SET)

* una risposta di errore che inizia con uno status -XXX

* una risposta numerica

* una risposta contenente uno o più valori

Nei primi due casi il primo carattere della prima riga definisce cosa
contiene il resto della risposta e in quante righe.

Negli altri due no, nel senso che una risposta in cui la prima riga
contiene un numero può avere un seguito (valori delle chiavi), o no (EXISTS
ecc.).

A questo punto fare un peek nel resto dei dati diventa problematico se il
socket è in blocking mode, se non c'è niente da leggere (EXISTS) si resta
appesi.

Sembra che l'unico modo di discriminare tra i due tipi di risposte sia
quindi di portarsi dietro la cronologia delle richieste e usare queste per
capire che tipo di formato ha la risposta. Non sarebbe più semplice
differenziare i due tipi di risposte (valore numerico su una riga come
unico contenuto, e valori su più linee con lunghezza del payload sulla
prima riga), in modo da svincolare completamente richieste e risposte nel
client? Poi è ovvio che se chi lo utilizza fa una richiesta non-bulk
riceverà subito la risposta, per richieste bulk dovrà invece fare il
matching da solo tra richieste e risposte, ma tanto deve farlo comunque è
intuile quindi farlo due volte (nel client per capire che formato ha la
risposta, e nel codice che lo usa per ricomporre richieste e risposte).

Metto in pausa il client python finchè non mi dai un parere. Può anche
darsi che io sia completamente off topic, non sarebbe la prima volta. :)

BTW già che ci siamo, una richiesta di esempio su come impostare una lista
nel doc ci starebbe bene, non è proprio immediato da capire.

Original issue reported on code.google.com by [email protected] on 26 Feb 2009 at 2:59

MGET is limited by REDIS_MAX_ARGS which is set to 16 by default.

The REDIS_MAX_ARGS constant is set to 16 in radis.c. This is a very small
number since it allows for only 15 keys to be requested simultaneously with
MGET. This should be either set to a higher value (like 128 for example) or
simply made a configuration directive for everyone to alter!

A BIG point in using MGET is to save client-server trips; this limitation
takes A LOT from MGET's advantage!

What puzzles me though is that even after increasing the REDIS_MAX_ARGS
constant to 256 within redis.c and recompiling the program, another limit
is reached: when trying to retrieve over 102 keys, the command simply
fails, and no result is returned any longer.

I suspect something to do with a memory limitation or something similar.

I must mention that I use the PHP language binding (not the PHP extension)
with PHP5 and Redis 0.8 on an up-to-date Ubuntu Hardy server installed on a
server with 4 GB of Ram and 2 x Xeon 2.8 GHz.

Great software!

Original issue reported on code.google.com by [email protected] on 3 Apr 2009 at 8:36

Binding a specific interface does not work in Mac OS X

bind(2) will fail on mac os x when Redis starts with a configuration file
that tells the server to bind a specific address instead to listen to all
the interfaces. The error is:

 [EADDRNOTAVAIL]    The specified address is not available from the local
                        machine.

Works perfectly on Linux. No clue about that but it is not so urgent right now.


Original issue reported on code.google.com by [email protected] on 1 Mar 2009 at 2:08

Issuing auth on a non protected instance crash the server.

What steps will reproduce the problem?
1. Start the redis server without authentication enable.
2. Connect with the database with a telnet session.
3. Issue the command AUTH

What is the expected output? What do you see instead?

The server should ignore the request and return +OK. But
Redis crashes with a Bus error.

What version of the product are you using? On what operating system?

GIT version on a Mac OS X.

Please provide any additional information below.

Evidence - Client session:
[@strongcoffee antirez-redis]$ telnet localhost 6379 
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
auth foo
Connection closed by foreign host.
[@strongcoffee antirez-redis]$ 

Evidence - Server output:
[@strongcoffee antirez-redis]$ ./redis-server 
- Server started, Redis version 0.08
- DB loaded from disk
- The server is now ready to accept connections on port 6379
. DB 0: 5 keys in 16 slots HT.
. 0 clients connected (0 slaves), 2566 bytes in use
. Accepted 127.0.0.1:59784
. DB 0: 5 keys in 16 slots HT.
. 1 clients connected (0 slaves), 2767 bytes in use
Bus error
[@strongcoffee antirez-redis]$ 



Original issue reported on code.google.com by [email protected] on 2 Apr 2009 at 2:39

Please clarify licensing of dict.[ch] and anet.[ch]

The copyright of the dict.c, dict.h, anet.c files is marked as belonging to
Salvatore Sanfilippo, but they don't actually specify a license. Further,
anet.h does not have any copyright information at all.

Although there is a GPL-2 "COPYING" file in the same directory, as a number
of files are licensed under other varying licenses (eg. sds.[hc] is under a
2-clause BSD), it would be preferable if these were explicitly labelled.

Just to be clear, I'm not stating a preference for any particular license,
just that the files contain their respective notices.

Best regards,
Chris




Original issue reported on code.google.com by [email protected] on 8 Mar 2009 at 3:31

anet.c compile on solaris, resource.h incomplete type

another solaris build issue, doesn't appear to be related to the previous - i'm 
getting hung up in anet.c on 
what appears to be a header conflict.

% uname -a
SunOS madrone 5.11 snv_67 i86pc i386 i86pc
% gcc --version
gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% export CC=gcc && make
rm -rf redis-server redis-benchmark redis-cli *.o
gcc -c    adlist.c
gcc -c    ae.c
gcc -c    anet.c
In file included from /usr/include/sys/vnode.h:50,
                 from /usr/include/sys/stream.h:39,
                 from /usr/include/netinet/in.h:66,
                 from /usr/include/sys/socket.h:52,
                 from anet.c:34:
/usr/include/sys/resource.h:172: error: field `ru_utime' has incomplete type
/usr/include/sys/resource.h:173: error: field `ru_stime' has incomplete type
*** Error code 1
make: Fatal error: Command failed for target `anet.o'
% gmake
gcc -c -std=c99 -pedantic -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  anet.c
In file included from 
/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/include/sys/types.h:44,
                 from anet.c:33:
/usr/include/sys/feature_tests.h:353:2: #error "Compiler or options invalid for 
pre-UNIX 03 X/Open 
applications    
and pre-2001 POSIX applications"
In file included from /usr/include/sys/vnode.h:50,
                 from /usr/include/sys/stream.h:39,
                 from /usr/include/netinet/in.h:66,
                 from /usr/include/sys/socket.h:52,
                 from anet.c:34:
/usr/include/sys/resource.h:172: error: field `ru_utime' has incomplete type
/usr/include/sys/resource.h:173: error: field `ru_stime' has incomplete type
gmake: *** [anet.o] Error 1

Original issue reported on code.google.com by [email protected] on 9 Apr 2009 at 12:58

Fea

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?


Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 6 Jul 2009 at 6:53

SELECT on a invalid index doesn't return a proper response.

STEPS TO REPRODUCE

What steps will reproduce the problem?
1. Start redis with default configuration.
2. Connect and issue a SELECT IDX (where IDX is greater than the maximum
databases), ie. 40
3. The connection gets closed by the server.

EXPECTED RESULTS

What is the expected output? What do you see instead?

Expect a proper response in "-ERR" form. In debug mode the server
outputs:

* Error writing to client: Bad address
redis-server(2000) malloc: *** error for object 0xc3fb: Non-aligned pointer
being freed
*** set a breakpoint in malloc_error_break to debug

The server doesn't crash and no information seems to be lost.


VERSION INFORMATION

redis version 0.7 on a Mac OS X (10.5.6)
Darwin strongcoffee.local 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24
17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386

Original issue reported on code.google.com by [email protected] on 24 Mar 2009 at 6:10

Request: commands operating on maps

Hello,

Fantastic concept about operating on sets. I think a simple Map<String, 
String> value with some simple command operations would be very useful.

Original issue reported on code.google.com by [email protected] on 28 Apr 2009 at 7:51

LPUSH seems to have a buffer problem

What steps will reproduce the problem?

jcarouth@jcarouth-laptop:~/redis-0.096> telnet localhost 6379
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
DBSIZE
:9
FLUSHALL  
+OK
DBSIZE
:0
LPUSH mylist value1
DBSIZE
+OK
DBSIZE
-ERR unknown command
:1
DBSIZE
:1
LLEN mylist
:1
LPUSH mylist value2
LLEN mylist
+OK
LLEN mylist
-ERR unknown command
:2
LLEN mylist
:2
LPOP mylist
$0

LPOP mylist
$0

LPOP mylist
$-1


What version of the product are you using? On what operating system?

Redis v0.096
Linux jcarouth-laptop 2.6.27.21-0.1-pae #1 SMP 2009-03-31 14:50:44 +0200
i686 i686 i386 GNU/Linux


Original issue reported on code.google.com by [email protected] on 12 May 2009 at 6:52

DEL operation...

I noticed that DEL is in the section on string, when in reality it works
for all types.

Secondly, I also noticed the document says DEL _key_ where it really is 

DEL _KEY1_ _KEY2_ ...

and what is really returned is the count of the number of successful
deletes. Is this correct?

Original issue reported on code.google.com by [email protected] on 5 Jul 2009 at 6:53

randomkey

Ma randomkey restituisce una chiave o un valore? A me sembra restituire un
valore a caso, non una chiave.

Original issue reported on code.google.com by [email protected] on 27 Feb 2009 at 1:48

Feature wished : append, prepend

Suggest: add atomic string operation, append and prepend

Possible advantage/usage:
1. i can easily change from memcached.
2. i can mget this list-like value with other keys, in one single
TCP/network overhead. -> FASTER !

Original issue reported on code.google.com by [email protected] on 6 Jul 2009 at 7:14

PHP Client Redis::_numeric_response doesn't handle numeric format correctly

What steps will reproduce the problem?
1. Run test.php included with PHP Redis class

What is the expected output? What do you see instead?
When running LLEN a0 the expected output is 3, instead it's blank (NULL).

What version of the product are you using? On what operating system?
Version 0.1 currently available in trunk.

Please provide any additional information below.
Here is the fix I came up with:

redis.php: 
<snip>
    function &_numeric_response($allow_negative=True) {
        $s =& trim($this->_read());
        $s = (0 === strpos($s, ':')) ? substr($s, 1) : $s;
        $i = (int)$s;
</snip>

Original issue reported on code.google.com by [email protected] on 22 May 2009 at 4:09

Memory leak?

Redis version 0.094 compiled and started on Centos 5.3 x86_64

Application (perl lib) issue many mget, ping, incr, decr commands on very
small dataset:

DB 0: 80 keys (0 volatile) in 128 slots HT

-rw-r--r-- 1 memd memd 1455 May  8 11:52 dump.rdb

# tail -f redis.log

. 14 clients connected (0 slaves), 538825 bytes in use
. 13 clients connected (0 slaves), 3330500 bytes in use
. 12 clients connected (0 slaves), 6172857 bytes in use
. 11 clients connected (0 slaves), 9313188 bytes in use
. 9 clients connected (0 slaves), 11728768 bytes in use
..........
. 11 clients connected (0 slaves), 78654840 bytes in use
. 12 clients connected (0 slaves), 81017697 bytes in use

Memory usage show by ps aux also growing.

Why? Is it right behaviour? I have wait for memory usage 300 Mb and shut it
down.

Original issue reported on code.google.com by [email protected] on 8 May 2009 at 7:57

Redis eating all cpu (system)

Centos 5.3 x86_64, Redis 0.096

Run redis-server for some time under some load and see

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
22602 memd      25   0  4192  916  388 R 85.4  0.0  29:54.39 redis-server

At this time redis did not accept new connections, but write in log-file 
. DB 0: 139 keys (0 volatile) in 256 slots HT.
. 50 clients connected (0 slaves), 97086 bytes in use
(numbers did not changing)

I restarted redis-server and repeated this situation few times with strace
running. Results in attachment (1.3 Mb).

Original issue reported on code.google.com by [email protected] on 22 May 2009 at 2:19

Attachments:

Compile on FreeBSD?

I failed to compile redis on FreeBSD. But when remove below code in redis.c, 
it will succeed in compliling.

#include <execinfo.h>

Original issue reported on code.google.com by [email protected] on 17 Jun 2009 at 11:46

Cache "groups"

Hi, I think I brought this topic up before w/ multi deletes but I think Ive
found the feature we are looking for in KV cache ...

http://www.opensymphony.com/oscache/wiki/FAQ.html

Where it says:

Cache entries can be flushed explicitly in several ways:

"When adding an entry to the cache, it can optionally be placed into one or
more groups. An entire group of entries can then be flushed by specifying
the name of the group to flush. eg <cache:flush group="group1"
scope="application"/>"

The group primarily handles the expiration time, so the question is if it
would be possible to have + assign key values w/ a group like this?  

Id imagine a protocol (idea) like:

ADDGROUP group 
MODGROUP group SET interval 3600
DELGROUP group

SETGROUP key group value

FLUSHGROUP group

Original issue reported on code.google.com by [email protected] on 4 Jul 2009 at 4:43

Compile on Solaris?

Not sure what Im doing wrong here, would like to get this going for POC on
Solaris though (OS X local is fine) ... any ideas?

jon@ny-devbuild01% declare -x CC=gcc
jon@ny-devbuild01% /usr/sfw/bin/gmake 
gcc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  adlist.c
gcc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  ae.c
ae.c: In function `aeProcessEvents':
ae.c:210: warning: implicit declaration of function `memset'
gcc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  anet.c
gcc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  dict.c
gcc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  redis.c
redis.c: In function `daemonize':
redis.c:2961: warning: int format, pid_t arg (arg 3)
redis.c: In function `loadDb':
redis.c:1520: warning: 'o' might be used uninitialized in this function
gcc -c -O2 -Wall -W -DSDS_ABORT_ON_OOM -g  sds.c
gcc -o redis-server -O2 -Wall -W -DSDS_ABORT_ON_OOM -g adlist.o ae.o anet.o
dict.o redis.o sds.o
Undefined                       first referenced
 symbol                             in file
bind                                anet.o
accept                              anet.o
listen                              anet.o
gethostbyname                       anet.o
socket                              anet.o
setsockopt                          anet.o
connect                             anet.o
inet_aton                           anet.o
inet_ntoa                           anet.o
ld: fatal: Symbol referencing errors. No output written to redis-server
collect2: ld returned 1 exit status
gmake: *** [redis-server] Error 1

Original issue reported on code.google.com by [email protected] on 18 Mar 2009 at 7:57

MDELETE possible?

Hi,

Currently we use a Java OSCache w/ the notion of "groups" which allow for
flexible cache management in certain situations.  One thing we noticed w/
Redis is that you can not delete multiple keys in a single shot, is this
something that would be possible to accomplish?

Thanks.

- Jon

Original issue reported on code.google.com by [email protected] on 4 May 2009 at 6:28

Error strings should all start with -ERR

In the new version of the protocol when there's a GET-like operation on any 
type the format of the 
response is:

-<ERRNO>
<OPERATION> against something...

To simplify parsing of the response it should probably be:

-<ERRNO>
-ERR: <OPERATION> against something

Original issue reported on code.google.com by [email protected] on 28 Feb 2009 at 5:02

INCR, INCRBY do not work correctly on keys with EXPIRE set

If you follow the steps bellow:
redis-0.093/redis-cli FLUSHDB
OK
redis-0.093/redis-cli SET a 5
OK
redis-0.093/redis-cli EXPIRE a 3600
1
redis-0.093/redis-cli GET a
5
redis-0.093/redis-cli INCR a
1
.. I believe the output should be 6 here... and it's the same problem if 
you combine INCRBY with EXPIRE.

Original issue reported on code.google.com by [email protected] on 29 Apr 2009 at 3:32

[Patch] Support for fixed-size lists

Here's a simple patch to support fixed-size lists. It adds two new commands 
(variants of LPUSH and RPUSH) :

CLPUSH <max size> <key> <value>

If the list has already at least <max size> items, drop the last (tail) item of 
the 
list before appending the newcomer to the head of the list.

CRPUSH <max size> <key> <value>

If the list has already at least <max_size> items, drop the first (head) item 
of 
the list before appending the newcomer to the tail of the list.



Original issue reported on code.google.com by [email protected] on 23 Jun 2009 at 1:48

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.