2015-03-16 16 views
5

İşlenmemiş komutları doğrudan yürütmenizi sağlayan StackExchange.Redis'te herhangi bir işlev var mı? Komutla bir dize sağlayacağım gibi, ör. (Aşağıdaki varsayımsal kodu):İşlenmemiş komutlar StackExchange.Redis'te mevcut mu?

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

ben ZADD dahil hemen her komut için mevcut yöntem vardır biliyorum ama önemli olan bu değil.

+1

Sadece şunu söylemek gerekirse: Bu artık değişti ve bunun için bir API var. Güncellenmiş cevaba bakınız. –

cevap

7

"Modüller" in tanıtımı, bunu çok daha alakalı hale getirdi; bu API şu anda Execute(...) sürümünde bulunmaktadır. Şu anda değil

ve ben yarar şüpheli olurdu: Önceden http://blog.marcgravell.com/2017/04/stackexchangeredis-and-redis-40-modules.html


: Bkz. Özellikle, bu, keskinleştirilmiş örneklerde (twemproxy, redis-cluster, vb.) Doğru yönlendirmeye izin vermez, yeniden adlandırılmış komut-map kullanımına izin vermez ve ikili anahtarların/değerlerin kullanılmasına izin vermez. Ayrıca brpop/blpop/brpoplpush, örneğin select olarak, watch/multi/exec çok riskli ve kavram kıran komutları uygunsuz kullanılmasına izin bloke-çıkar - hangi her çoklayıcı (iyi, select ISN' için felaket olacaktır Bir biggie, o sadece Send db undefined bırakır gibi yapılandırılmış olabileceği gibi - bazı benzer örnekler sayesinde zaten mevcut olan kod). Aynı zamanda genel kütüphanesinden , client pause, vb. Kullanılmaması gereken tehlikeli komutları da açığa çıkarır - yine tüm çok kötü fikirler.

Ama tabii teoride bu yapılabilir ... ama gerçekten yukarıda birçok sorunu dengelemek için zorlayıcı bir neden görmüyorum isterim. Şu anda, geçici komutları yürütmenin en açık yolu, ScriptEvaluate aracılığıyladır - elbette ki Lua yazmayı içerir.

+0

İşte bir kullanım durumu: Değere ne kadar büyük bir anahtar verildiğini görmek için Redis'e bir DEBUG OBJECT Komutu göndermek istiyorum. –

+0

@Daniel tbh Daha önce DEBUG OBJECT'e maruz kaldığımızı düşündük - db analizinde "opserver" da kullandığımıza eminim, fakat aynı zamanda bir hafta önce piyasaya sürülen yeni Execute API'sında da var; http://blog.marcgravell.com/2017/04/stackexchangeredis-and-redis-40-modules.html –