2014-10-07 4 views
7

यह 'हैलो' क्यों प्रिंट नहीं करता है?रेडिस लुआ लिपि से कंसोल करने के लिए आउटपुट कैसे करें?

$ redis-cli 
127.0.0.1:6379> eval "print('hello')" 0 
(nil) 
127.0.0.1:6379> 

विंडोज 7 पर

मैं Jedis से लुआ स्क्रिप्ट फोन कर रहा हूँ मैक ओएस एक्स, 2.8.12 पर 2.8.14 चल रहा है। इन्हें विकसित करना एक जहाज को एक बोतल बनाने, मित्ते पहनने की तरह है, जबकि किसी ने मुझे चेहरे पर छिद्रित किया है। मेरा अंतिम लक्ष्य किसी भी तरह प्रिंट ट्रेस स्टेटमेंट्स, डीबग, जो भी हो, के माध्यम से एक अर्ध कार्यात्मक विकास ढेर को फिर से बनाना है।

मेरा कामकाज मेरे लुआ लिपि के लिए है 'लॉग' नामक एक रेडिस सूची का उपयोग करें, इसे जेडिस पर लौटाना, और फिर सामग्री को डंप करना।

redis.call('del', 'log') 
redis.call('rpush', 'log', 'trace statement 1') 
redis.call('rpush', 'log', 'trace statement 2') 

... 

redis.call('lrange', 'log', 0, -1) 

आदि

अद्यतन कोई सुझाव के लिए अग्रिम, मदद, धन्यवाद: किंडा इस तरह बस redis-सर्वर निष्पादन के लिए टर्मिनल विंडो के माध्यम से 'हैलो' करता है उत्पादन देखा। चतुर। तो अब मैं रेडिस-सर्वर, रेडिस-क्ली इंटरेक्टिव, और रेडिस-क्ली मॉनिटर के लिए प्रत्येक टर्मिनल हूं।

अद्यतन 2: बस पता लगा मैं थोड़े इस तरह redis-CLI पर नजर रखने के लिए पता लगाने बयान मुद्रित कर सकते हैं:

eval "redis.call('echo', 'ugh')" 0 

इस तरह थोड़े प्रकट होता है कौन सा:

123.456 [0 127.0.0.1:57709] "eval" "redis.call('echo', 'ugh')" "0" 
123.456 [0 lua] "echo" "ugh" 

उत्तर

10

चेहरा हथेली थप्पड़। अंत में पता चला कि redis.log (loglevel, संदेश) है। जो रेडिस-सर्वर के कंसोल आउटपुट को भी लिखता है।

सहायक अज्ञात नीचे मतदाता के लिए विशेष धन्यवाद। आप एक बेहतर इंसान हैं।

+3

मैं हाल ही में तरीकों कि सभी का पता लगाने और डिबगिंग में मदद करने के उद्देश्य से कर रहे हैं के इस संग्रह पोस्ट किया है लालस में लुआ - उम्मीद है कि यह मदद करता है :) https://redislabs.com/blog/5-methods-for-tracing-and-debugging-redis-lua- स्क्रिप्ट –

+0

नीचे मतदाता टिप्पणी की तरह - याह ट्रॉली ने नौसिखिया पर हराया। .. गीज़ – chrislovecnm

1

रेडिस के खिलाफ लुआ स्क्रिप्ट विकसित करने के बेहतर तरीके हैं।

लुआ लॉग का उपयोग करना एक तरीका है। लेकिन आप इसे "सदस्यता पर" लॉग इन करने के लिए डीबग विषय पर भी प्रकाशित कर सकते हैं।

तुम भी सेटअप lua ब्रेक अंक के साथ एक IDE मैं विकास के लिए सबसे अच्छा समाधान है जो लगता है कि कर सकते हैं: http://www.trikoder.net/blog/make-lua-debugging-easier-in-redis-87/

इसके अलावा, स्वत: परीक्षण, इकाई और/या एकीकरण परीक्षणों मत भूलना सहायक होते हैं (एक के खिलाफ निष्पादन डीबग रेडिस उदाहरण)।

1

jedis का उपयोग कर, यहाँ .. कैसे आप यह कर सकते है .. इस सेट का उपयोग करें और आदेशों पाने के लिए एक उदाहरण है आप classpath में jedis-2.6.0 जार फ़ाइल को शामिल करने की जरूरत है।

//jar file - jedis-2.6.0.jar 

import redis.clients.jedis.Jedis; 
public class MainClass { 

public static void main(String[] args){ 
    Jedis jedis = new Jedis("localhost"); 
    System.out.println("Connection to server sucessfully"); 
    jedis.set("name", "a"); 
    System.out.println("Stored string (b4 lua) : "+ jedis.get("name")); 
    String script="redis.call('set','name','b')"; 
    jedis.eval(script); 
    System.out.println("Stored string : "+ jedis.get("name")); 
} 

} 

उत्पादन: सर्वर से कनेक्शन सफलतापूर्वक संग्रहित स्ट्रिंग (बी 4 lua): एक संग्रहित स्ट्रिंग: ख

संबंधित मुद्दे