Seite 1 von 1
Key-Value Store für Python 3
Verfasst: Dienstag 12. Februar 2013, 15:13
von patmaster
Hi,
Ich suche einen key-value store, für den es einen vernünftigen python 3 client gibt.
Ich habe bisher memcache verwendet, aber das 1MB pro Item Limit macht mir zu schaffen. Ich frage eine DB ab und erhalte da ziemlich große Ergebnise (bisher max. 20MB).
Im Prinzip suche ich sowas wie memcache (vor allem das man angeben kann wie langer der Wert vorgehalten werden soll fan dich klasse), nur ohne das Limit

Ich habe zwar gelesen das man das Limit bei memcache erhöhen kann, aber ich denke die Leute werden sich da schon etwas bei gedacht haben

Ich hab's auch schon versucht und bei richtig großen values kackt der Service jedes mal ab.
Erfahrungen, Empfehlungen, Ideen ?
Re: Key-Value Store für Python 3
Verfasst: Mittwoch 13. Februar 2013, 08:08
von noisefloor
Hallo,
der Superstar

unter den KV-Stores ist Redis (
http://redis.io). Dafür gibt's auch eine P3 Anbindung (
http://pypi.python.org/pypi/redis).
Ich habe für freies Magazin mal eine Artikel zu Redis geschrieben (
Link. In dem solltest du einen guten Überblick über die Möglichkeiten von Redis bekommen.
Gruß, noisefloor
Re: Key-Value Store für Python 3
Verfasst: Mittwoch 13. Februar 2013, 08:10
von noisefloor
Hallo,
Nachtrag: Redis erlaubt Werte bis zu einer Größe von 512 MB.
Gruß, noisefloor
Re: Key-Value Store für Python 3
Verfasst: Mittwoch 13. Februar 2013, 08:56
von patmaster
Hi,
Danke, Redis scheint echt perfekt zu sein.
Ich habe aber schon das 1. Problem und hoffe du kannst mir helfen
Ich verwende Redis in der Version 2.4.
Ich will eigentlich eine Python Liste von Python Listen unter einem key speichern.
Das scheint nicht zu klappen, deswegen pickle ich jetzt meine Liste zu einem byte-wert.
Ich müsste jetzt also nur mehr eine Liste von bytes unter einem key speichern.
Ich dachte eigenltich das lpush dafür gedacht sei aber ich kriege ständig den Fehler, das der key das falsche value halten würde.
Hier mein Code:
Code: Alles auswählen
job_atts = pickle.dumps([event.job, event.exception, datetime.now()])
REDIS_CLIENT.lpush('jobs_fail', job_atts)
Error:
Code: Alles auswählen
redis.exceptions.ResponseError: Operation against a key holding the wrong kind of value
Noch dazu würde ich gerne eine expiration auf die items setzen, aber das scheint ja gar nicht vorgesehen zu sein....wäre aber auch nicht soooo schlimm.
//EDIT:
Der Fehler kam beim lesen der Values. Da muss man dann natürlich lrange verwenden.....-.-
Re: Key-Value Store für Python 3
Verfasst: Mittwoch 13. Februar 2013, 09:54
von noisefloor
Hallo,
Noch dazu würde ich gerne eine expiration auf die items setzen,
Redis kennt EXPIRE, mit dem man die Lebensdauer eines Schlüssels setzen kann. Das geht AFAIR mit allen Datentypen. Doku:
http://redis.io/commands/expire
Gruß, noisefloor
Re: Key-Value Store für Python 3
Verfasst: Mittwoch 13. Februar 2013, 11:04
von patmaster
noisefloor hat geschrieben:Hallo,
Noch dazu würde ich gerne eine expiration auf die items setzen,
Redis kennt EXPIRE, mit dem man die Lebensdauer eines Schlüssels setzen kann. Das geht AFAIR mit allen Datentypen. Doku:
http://redis.io/commands/expire
Gruß, noisefloor
Danke für den Tipp. Ich verwende jetzt ltrim, was sowieso besser für mich geeignet ist
