2017-04-25 51 views
-2

參數我有一個錯誤與redis的set命令本地Redis的服務器上(127.0.0.1:6379)Redis的錯誤:錯誤錯號爲 '設置' 命令

版本:

npm version : 2.15.0; 
node version : 4.4.2; 
nodejs verison : 0.10.25; 
redis version : 2.7.1; 

錯誤:

events.js:141 throw er; // Unhandled 'error' event 
ReplyError: ERR wrong number of arguments for 'set' command at parseError 
(/opt/xxx/xxx/node_modules/redis/node_modules/redis 
parser/lib/parser.js:193:12) at parseType 
(/opt/xxx/xxx/node_modules/redis/node_modules/redis- 
parser/lib/parser.js:303:14) 

我所有的代碼看起來像這樣:

redis.set("key","value") 

我的本地機器上的代碼運行成功,但在aws linux機器上出現此錯誤。

var matchedMaps = map.get(publicURIField); 
      if(matchedMaps) { 
       matchedMaps.forEach(function(matchedMap){ 
        var patternToValidate = matchedMap.pattern; 
        var type = matchedMap.type; 
        var tagID = matchedMap.tagID; 
        var patternToCheck = "cs-uri-stem"; 
        var patternToSave = ""; 
        if(type==1){ 
         patternToCheck = "c-referrer"; 
        } 
        var regexToFind = new RegExp(patternToValidate.substring(1,patternToValidate.length-1)); 
        var matchedPattern; 
        if (regexToFind.test(rawLogParsed[patternToCheck].toString())) { 
         if (matchedMap.regexType=="&"){ 
          matchedMap.patterns.forEach(function(patternObject){ 
           var key = patternObject.pattern.split("=")[0]; 
           var value = rawLogParsed[patternToCheck].toString().split(key)[1]; 
           if(rawLogParsed[patternToCheck].toString().split(key)[1].split("&")){ 
            value = rawLogParsed[patternToCheck].toString().split(key)[1].split("&")[0]; 
           } 
           patternToSave += key+value+"&"; 
          }); 
         }else{ 
          matchedMap.patterns.forEach(function(patternObject){ 
           if(patternObject.pattern.indexOf("*")>-1){ 
            patternObject.pattern = patternObject.pattern.replace(/\*!/g, '.*'); 
           } 
           patternToSave += rawLogParsed[patternToCheck].toString().match(patternObject.pattern)+"/"; 
          }); 
         } 
         patternToSave = patternToSave.substring(0,patternToSave.length-1); 
         var matchedField = publicURIField,matchedPattern = patternToSave 
          ,key = tagID + "_"+userID+"_"+ matchedField + "_" + matchedPattern + "_" + type + "_" + fixedMinuteNumber; 
         if (tagUsageInfo[startKeyForRedis+key] == undefined) { 
          var tagObject = { 
           pattern:matchedPattern, 
           matchedField:matchedField, 
           userID:userID, 
           tagName:matchedMap.tagName, 
           monthNumber:parseInt(mMonthToCheck), 
           minuteNumber: parseInt(fixedMinuteNumber), 
           hourNumber: parseInt(yearMonthDayHourToCheck), 
           dayNumber: parseInt(yearMonthDayToCheck), 
           tagID: tagID, 
           matchedPattern: matchedPattern, 
           totalRequests: 1, 
           totalEgress: parseInt(bytes), 
           totalTransfered: parseInt(bytes), 
           totalRest: parseInt(totalWorld), 
           totalUS: parseInt(totalUS) 
          } 
          if(isIngress){ 
           tagObject.totalIngres += parseInt(bytes); 
          } 
          dbclient1.set(startKeyForRedis+"tagUsage_"+key,JSON.stringify(tagObject)); 
          tagUsageInfo[startKeyForRedis+"tagUsage_"+key] = startKeyForRedis+key; 
         } 
         else { 
          dbclient1.get(startKeyForRedis+"tagUsage_"+key, function(err, tagObject) { 
           var tagObjectJson = JSON.parse(tagObject); 
           tagObjectJson.totalRequests += 1; 
           tagObjectJson.totalEgress += parseInt(bytes); 
           tagObjectJson.totalTransfered += parseInt(bytes); 
           tagObjectJson.totalRest += parseInt(totalWorld); 
           tagObjectJson.totalUS += parseInt(totalUS); 
           tagObjectJson.totalRequests += 1; 
           if(isIngress){ 
            tagObject.totalIngres += parseInt(bytes); 
           } 
           dbclient1.del(startKeyForRedis+"tagUsage_"+key); 
           dbclient1.set(startKeyForRedis+"tagUsage_"+key, JSON.stringify(tagObjectJson)); 
          }); 
         } 
        } 
       }); 
      } 

有幫助嗎?

+1

代碼或者它並沒有發生。 – robertklep

+0

這條消息是不是告訴你這個問題?錯誤的參數數 –

+0

它不能,因爲我所有的代碼是redis.set(key,value); key = type string,value = JSON.stringify(JSON) –

回答

0

all of my codes look like this: [...]

所有的代碼看起來都不重要。導致問題的特定線路很重要,但不幸的是您沒有包含它。

您提供的錯誤包括一些文件和行號,但您似乎刪除了與代碼相關的錯誤。如果您仔細閱讀這些信息,那麼您應該能夠知道這些錯誤與哪些行相關並專注於這些行。

如果錯誤顯示在服務器上而不是在桌面上,那麼我會懷疑你可能試圖在文件系統上使用一些環境變量或文件來填充程序中的一些變量,而那些在服務器上可用,導致在那裏放置undefined

當您向要訪問Redis的每個位置添加console.log()語句時,您肯定會發現問題,因此您首先打印它,然後再呼叫Redis。這樣至少你會知道什麼數據導致了這個問題。我懷疑你有一些undefined值或類似的東西。

請記住,JSON.stringify(undefined)返回undefined而不是有效的JSON字符串。類似的東西可能會導致問題。添加調試消息將有助於縮小範圍。

一些額外的建議:你可以使用redis模塊的prefix參數,那麼你不必在全地方添加startKeyForRedis+。您可以設置一個前綴一次並自動添加前綴。請參閱該文檔:

+0

感謝您的回答,但是當我在本地機器上運行相同的代碼時,它的工作和運行。在aws機器上(linux)他堅持這個錯誤... –

+0

謝謝,它的工作,這是因爲在本地系統中var不是未定義的,但在遠程服務器中它是未定義的,感謝您的幫助。 –