Redis:WRONGTYPE Operation against a key holding the wrong kind of value

<div id="content_views" class="markdown_views"> <!-- flowchart 箭頭圖標 勿刪 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p><a href="https://blog.csdn.net/hanchao5272/article/details/79792465" rel="nofollow" target="_blank">相關鏈接:經過Canal保證某網站的Redis與MySql的數據自動同步</a></p>css

<hr>python

<h2 id="1錯誤信息"><a name="t0"></a>1.錯誤信息</h2>web

<pre class="prettyprint" name="code"><code class="language-console hljs livecodeserver has-numbering" onclick="mdcp.signin(event)">redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against <span class="hljs-operator">a</span> key holding <span class="hljs-operator">the</span> wrong kind <span class="hljs-operator">of</span> <span class="hljs-built_in">value</span> <div class="hljs-button signin" data-title="登陸後複製"></div></code></pre>redis

<h2 id="2分析"><a name="t1"></a>2.分析</h2>markdown

<p>當前程序中key的操做類型,並不與redis庫中存在的key的類型相匹配。舉例 <br> 第一次保存key,將其設置爲key-value形式</p>svg

<pre class="prettyprint" name="code"><code class="language-console hljs cs has-numbering" onclick="mdcp.signin(event)">[root@server3 src]<span class="hljs-preprocessor"># ./redis-cli -h 192.168.6.123 -p 6379 -a "{password}"</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; <span class="hljs-keyword">set</span> my_test_userid_001 <span class="hljs-string">"0001"</span> OK <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; <span class="hljs-keyword">get</span> my_test_userid_001 <span class="hljs-string">"0001"</span><div class="hljs-button signin" data-title="登陸後複製"></div></code></pre>網站

<p>第二次保存key,將其以key-map形式進行保存,則會報錯</p>ui

<pre class="prettyprint" name="code"><code class="language-redis hljs livecodeserver has-numbering" onclick="mdcp.signin(event)"><span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; hmset my_test_userid_001 user001 <span class="hljs-string">"0001"</span> user002 <span class="hljs-string">"0002"</span> (error) WRONGTYPE Operation against <span class="hljs-operator">a</span> key holding <span class="hljs-operator">the</span> wrong kind <span class="hljs-operator">of</span> <span class="hljs-built_in">value</span><div class="hljs-button signin" data-title="登陸後複製"></div></code></pre>spa

<p>若是刪除以前的key,則當前的操做能夠進行:</p>.net

<pre class="prettyprint" name="code"><code class="language-console hljs python has-numbering" onclick="mdcp.signin(event)"><span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; <span class="hljs-keyword">del</span> my_test_userid_001 (integer) <span class="hljs-number">1</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; hmset my_test_userid_001 user001 <span class="hljs-string">"0001"</span> user002 <span class="hljs-string">"0002"</span> OK <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; hgetall my_test_userid_001 <span class="hljs-number">1</span>) <span class="hljs-string">"user001"</span> <span class="hljs-number">2</span>) <span class="hljs-string">"0001"</span> <span class="hljs-number">3</span>) <span class="hljs-string">"user002"</span> <span class="hljs-number">4</span>) <span class="hljs-string">"0002"</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; hmget my_test_userid_001 user001 <span class="hljs-number">1</span>) <span class="hljs-string">"0001"</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>&gt; <span class="hljs-keyword">del</span> my_test_userid_001 (integer) <span class="hljs-number">1</span><div class="hljs-button signin" data-title="登陸後複製"></div></code></pre>

<h2 id="3問題解決"><a name="t2"></a>3.問題解決</h2>

<h3 id="31臨時解決"><a name="t3"></a>3.1.臨時解決</h3>

<p>刪除衝突key,相似於:</p>

<pre class="prettyprint" name="code"><code class="hljs css has-numbering" onclick="mdcp.signin(event)">192<span class="hljs-class">.168</span><span class="hljs-class">.6</span><span class="hljs-class">.123</span><span class="hljs-pseudo">:6379</span>&gt; <span class="hljs-tag">del</span> <span class="hljs-tag">my_test_userid_001</span><div class="hljs-button signin" data-title="登陸後複製"></div></code></pre>

<h3 id="32根本解決"><a name="t4"></a>3.2.根本解決</h3>

<p>形成這個問題,確定是程序在多處使用了同一個<code>key</code>,而且是以不一樣的類型,有的以key-value類型,有的以key-map,有的以key-object。 <br> 查看程序,找到這個衝突,並修改。</p> 原文地址:https://blog.csdn.net/hanchao5272/article/details/79051364 </div>

相關文章
相關標籤/搜索