Arbeiten Sie mit riak 2.0.x aus Python 3.4. Die Dokumentation für den Python-Client finden Sie unter http://basho.github.io/riak-python-client/index.html.
Sie können riak 2.0.4 mit dem Befehl brown installieren. Der Befehl Brew scheint hinter dem neuesten zu stehen. Wenn Sie ihn aktualisieren möchten, tun Sie dies bitte selbst.
% brew install riak
Nehmen Sie Einstellungen vor, um den Dateideskriptor zu ändern. Es scheint, dass es nicht starten wird, wenn diese nicht implementiert sind.
/Library/LaunchDaemons/limit.maxfiles.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>65536</string>
<string>65536</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
/Library/LaunchDaemons/limit.maxproc.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
Starten Sie das Betriebssystem hier neu.
Überprüfen Sie die Einstellungen nach dem Start.
% launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 2048 2048
maxfiles 65536 65536
Wenn Sie Pong anzeigen, ist es OK.
% riak start
% riak ping
pong
Setzen Sie allow_mult auf true. Überprüfen Sie zunächst den Speicherort der Einstellungsdatei, die beim Start automatisch generiert wurde.
$ riak config effective | grep allow_mult
buckets.default.allow_mult = false
Die obigen Ausgabeinformationen waren falsch. Ändern Sie sie daher in "wahr".
$ sudo echo "buckets.default.allow_mult = true" >> /usr/local/Cellar/riak/2.0.4/libexec/etc/riak.conf
Starten Sie riak neu und stellen Sie sicher, dass es wahr ist.
$ riak restart
$ riak config effective | grep allow_mult
buckets.default.allow_mult = true
Installieren Sie den offiziellen riak-python-client.
% pip install riak
% ipython
import riak
client = riak.RiakClient()
bucket = client.bucket('manifestations')
obj = bucket.new('4873113938', data={
'title': 'Erste Python 3rd Edition',
'creator': 'Mark Lutz',
'isbn': '4873113938'
}).store() # -> <riak.riak_object.RiakObject at 0x10a663898>
obj = bucket.new('4797372273', data={
'title': 'Spaß Ruby 4. Ausgabe',
'creator': 'Masayoshi Takahashi',
'isbn': '4797372273'
}).store() # -> <riak.riak_object.RiakObject at 0x10a6b4470>
print(bucket.get('4873113938').data) # -> {'creator': 'Mark Lutz', 'title': 'Erste Python 3rd Edition', 'isbn': '4873113938'}
bucket.get_keys() # -> ['4873113938', '4797372273']
print(bucket.multiget(['4873113938','4873113938'])) # -> [<riak.riak_object.RiakObject object at 0x10a6b45f8>, <riak.riak_object.RiakObject object at 0x10a787a90>]
bucket.delete('4873113938')
print(bucket.get('4873113938').data) # -> None
bucket.get_keys() # -> ['4797372273']
Eine Funktion, mit der Sie den numerischen Wert erhöhen oder verringern können. Es hilft, Standard zu sein. Es ist ein Rätsel, das Sie nach dem Inkrementieren speichern müssen () ...
$ riak-admin bucket-type create counters '{"props":{"datatype":"counter"}}'
$ riak-admin bucket-type activate counters
$ ipython
import riak
from riak.datatypes import Counter
client = riak.RiakClient()
bucket = client.bucket_type('counters').bucket('manifestations')
counter = Counter(bucket, 'manifestations')
counter.value # -> 0
counter.increment()
counter.store()
counter.value # -> 1
Im Ausgangszustand sollte die Suchfunktion (Suche) ausgeschaltet sein, aber lassen Sie es uns vorerst überprüfen. Wenn deaktiviert, ändern Sie die Einstellung und starten Sie riak neu.
$ riak config effective | grep "search ="
search = off
$ sudo sed -e 's/search = off/search = on/' -i.back /usr/local/Cellar/riak/2.0.4/libexec/etc/riak.conf
$ riak restart
ok
$ riak ping
pong
$ riak config effective | grep "search ="
search = on
Es ist ein Ärger, aber ich werde es einstellen.
% wget https://raw.githubusercontent.com/basho/yokozuna/develop/priv/default_schema.xml
% ipython
import riak
client = riak.RiakClient()
f = open('default_schema.xml')
content = f.read()
f.close()
schema_name = '_yz_default'
client.create_search_schema(schema_name, content)
client.create_search_index('manifestation_index','_yz_default')
Erstellen Sie einen Bucket-Typ.
$ riak-admin bucket-type create manifestation_index '{"props":{"search_index":"manifestation_index"}}'
manifestation_index created
$ riak-admin bucket-type activate manifestation_index
manifestations has been activated
Ich werde versuchen, Daten zu registrieren und zu suchen.
$ ipython
import riak
client = riak.RiakClient()
bucket = client.bucket_type('manifestation_index').bucket('books')
book = bucket.new('4621088629', {'title_s': 'Geschichte der orientalischen Astronomie', 'isbn_s': '4621088629', 'price_i': 1080, 'creator_s': 'Nakamura', 'date_of_publication_dts': '2014-10-25T00:00:00Z'})
book.store()
book = bucket.new('4864102538', {'title_s': 'Weltraumsonde', 'isbn_s': '4864102538', 'price_i': 4320, 'creator_s': 'Philip Segera', 'date_of_publication_dts': '2013-08-06T00:00:00Z'})
book.store()
book = bucket.new('4422420046', {'title_s': 'Das schönste Element Bilderbuch der Welt', 'isbn_s': '4422420046', 'price_i': 4104, 'creator_s': 'Theodore Gray', 'date_of_publication_dts': '2010-10-22T00:00:00Z'})
book.store()
book = bucket.new('4087472221', {'title_s': 'Gebirgskamm der Götter <oben>', 'isbn_s': '4087472221', 'price_i': 788, 'creator_s': 'Yume Kissen 獏', 'date_of_publication_dts': '2000-08-01T00:00:00Z'})
book.store()
book = bucket.new('408747223X', {'title_s': 'Gebirgskamm der Götter <unten>', 'isbn_s': '408747223X', 'price_i': 864, 'creator_s': 'Yume Kissen 獏', 'date_of_publication_dts': '2000-08-01T00:00:00Z'})
book.store()
book = bucket.new('4163537406', {'title_s': 'Feindliche Gewässer', 'isbn_s': '4163537406', 'price_i': 119, 'creator_s': 'Peter Haksozen', 'date_of_publication_dts': '1998-01-01T00:00:00Z'})
book.store()
bucket.get_keys() # -> ['4422420046',
'4163537406',
'4087472221',
'408747223X',
'4621088629',
'4864102538']
results = client.fulltext_search('manifestation_index', 'title_s:Gott*')
for doc in results['docs']:
bucket = client.bucket_type(doc['_yz_rt']).bucket(doc['_yz_rb'])
b = bucket.get(doc['_yz_rk'])
print(b.data)
# -> {'creator_s': 'Yume Kissen 獏', 'title_s': 'Gebirgskamm der Götter <oben>', 'price_i': 788, 'date_of_publication_dts': '2000-08-01T00:00:00Z', 'isbn_s': '4087472221'}
{'creator_s': 'Yume Kissen 獏', 'title_s': 'Gebirgskamm der Götter <unten>', 'price_i': 864, 'date_of_publication_dts': '2000-08-01T00:00:00Z', 'isbn_s': '408747223X'}
results = client.fulltext_search('manifestation_index', 'price_i:[* TO 1000]')
for doc in results['docs']:
bucket = client.bucket_type(doc['_yz_rt']).bucket(doc['_yz_rb'])
b = bucket.get(doc['_yz_rk'])
print(b.data)
# -> {'creator_s': 'Yume Kissen 獏', 'title_s': 'Gebirgskamm der Götter <oben>', 'price_i': 788, 'date_of_publication_dts': '2000-08-01T00:00:00Z', 'isbn_s': '4087472221'}
{'creator_s': 'Yume Kissen 獏', 'title_s': 'Gebirgskamm der Götter <unten>', 'price_i': 864, 'date_of_publication_dts': '2000-08-01T00:00:00Z', 'isbn_s': '408747223X'}
{'creator_s': 'Peter Haksozen', 'title_s': 'Feindliche Gewässer', 'price_i': 119, 'date_of_publication_dts': '1998-01-01T00:00:00Z', 'isbn_s': '4163537406'}
Wenn Sie die Geschwister-Eigenschaft der Instanzvariablen riak.riak_object.RiakObject verwenden, werden mehrere Elemente in der Liste angezeigt. In diesem Fall ist es besser, es mit der Löschmethode zu löschen und dann neu zu registrieren. Ich wünschte, es gäbe eine Möglichkeit, alles auf einmal zu löschen ...
Recommended Posts