2015-03-16 14 views
5

Czy istnieje jakaś funkcjonalność w StackExchange.Redis, która pozwala na bezpośrednie wykonywanie poleceń surowych? Tak, jakbym dostarczyła ciąg z poleceniem, np. (Kod hipotetyczny poniżej):Czy polecenia raw są dostępne w StackExchange.Redis?

conn.Send("ZADD mysortedset 1 john"); 

wiem, że istnieją metody dostępne dla niemal każdym poleceniu tym ZADD, ale to nie o to chodzi.

+1

Powiem tylko, że teraz to się zmieniło i jest na to API. Zobacz zaktualizowaną odpowiedź. –

Odpowiedz

7

Wprowadzenie "modułów" sprawiło, że było to o wiele bardziej istotne; ten interfejs API istnieje już w Execute(...). Zobacz: http://blog.marcgravell.com/2017/04/stackexchangeredis-and-redis-40-modules.html


Poprzednio:

Obecnie nie, i byłbym wątpliwe korzyści. W szczególności zrobienie tego nie pozwoliłoby na poprawne wyznaczanie trasy w przypadku zaszyfrowanych instancji (twemproxy, redis-cluster itp.), Nie pozwalałoby na zmianę nazwy używanego polecenia mapowania i nie pozwalałoby na użycie kluczy/wartości binarnych. Pozwoliłoby to również bardzo ryzykowne i koncepcja łamanie poleceń być stosowane niewłaściwie, takie jak select, watch/multi/exec, blokowanie pop brpop/blpop/brpoplpush - wszystko, co byłoby katastrofalne dla multipleksera (dobrze, select ISN” t biggie, ponieważ może być skonfigurowany tak, że Send pozostawia niezdefiniowany db - kod dla tego już istnieje dzięki kilku podobnym przykładom). Ujawniłoby to również niebezpieczne polecenia, które powinny być nigdy nie muszą być używane z ogólnej biblioteki: debug segfault, client pause, itd. - znowu, wszystkie bardzo złe pomysły.

Ale pamiętaj, teoretycznie można zrobić ... ale chciałbym naprawdę chcą zobaczyć dobry powód, by zrównoważyć wiele problemów powyżej.

W tej chwili najbardziej wyeksponowanym sposobem wykonywania poleceń ad-hoc jest ScriptEvaluate - wymagałoby to oczywiście napisania Lua.

+0

Oto przypadek użycia: Chciałbym wysłać polecenie DEBUG OBJECT do Redis, aby zobaczyć, jak dużą wartość ma dany klucz. –

+0

@Daniel tbh Wydaje mi się, że odsłoniliśmy już DEBUG OBJECT - całkiem pewni, że używamy tego w "opserver" dla db analytics, ale: istnieje również w nowym Execute API, wydanym około tygodnia temu; http://blog.marcgravell.com/2017/04/stackexchangeredis-and-redis-40-modules.html –

Powiązane problemy