WRONGTYPE Operation against a key holding the wrong kind of value:类型搞混弄出的错误

今天用C# 连接Redis做性能测试,用的接口是StackExchange.Redis,按照正常的思路获取数据库连接,代码如下:

1             string conn = "我的ip:6379,password=登录密码";
2
3             ConnectionMultiplexer client = ConnectionMultiplexer.Connect(conn);
4
5             IDatabase db = client.GetDatabase(2);

然后就向里边添加数据,类似的代码如下:

1                 RedisKey key ="1";
2
3                 RedisValue value = "....";
4
5                 this.db.SetAdd(key, value);

弄完以后用Redis-cli连接Redis,命令是:

redis-cli -h 192.168.1.XXX -p 6379 -a 登录密码

登录成功以后用get的方式获取如:get 1,发现报错:WRONGTYPE Operation against a key holding the wrong kind of value,到网上看看有说值重复的说啥的都有,后来检查代码发现我添加数据的时候用的是this.db.SetAdd(key, value);这句的意思是向集合中添加代码的,后来修改成 this.db.StringSet(key, value);就一切正常了

本来就是一个非常基础的问题查啊查,还以为是key值或value值出现特殊字符造成的呢,查了半天,如果以后有兄弟遇到像我一样的问题不妨去看看你的类型是不是有问题,对了当时用get的时候报错,用smembers 1 都能出来值已经很明显那个是一个集合了,新手兄弟们一起吸取教训啊,老鸟们别嫌我说话烦啊,这个不是给老手看的

时间: 2024-08-25 11:54:42

WRONGTYPE Operation against a key holding the wrong kind of value:类型搞混弄出的错误的相关文章

Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value 解决处理

首先应该明白报这个错误说明了你用的jedis方法与redis服务器中存储数据的类型存在冲突. 例如:数据库中有一个key的数据存储的是Hash类型的,但是你使用jedis执行数据操作的时候却使用了非Hash的操作方法.此时就会报 WRONGTYPE Operation against a key holding the wrong kind of value这个错误! 问题解决: 先执行一条如下命令: redis 127.0.0.1:6379>type key 此时会显示出该key存储在现在re

WRONGTYPE Operation against a key holding the wrong kind of value

今天改动代码,一运行就跑错了,错误原因: 因为redis中已经存在了相同的key, 而且key对应的值类型并不是Set,而是SortSet(改动前):再调用smembers时,抛出此错误. 解决方法: 将原来的SortSet类型的key给Del掉,再从新执行代码,没有问题. 看来以后改动缓存类型时,要长个心眼,先把之前的同名不同类型的Key给Del掉.

redis 报Operation against a key holding the wrong kind of value警告的解决方法

WRONGTYPE Operation against a key holding the wrong kind of value github:https://github.com/antirez/redis/issues/2864 原因为redis存在一个同key但是类型不同的数据,在插入新类型数据时需要先删除已有的key值.

Go: invalid operation - type *map[key]value does not support indexing

package main import "fmt" type Currency string type Amount struct { Currency Currency Value float32 } type Balance map[Currency]float32 func (b *Balance) Add(amount Amount) *Balance { current, ok := (*b)[amount.Currency] if ok { (*b)[amount.Curr

(诊断)为GitHub添加SSH key时出现“Could not open a connection to your authentication agent”错误的应对方案(转)

在为windows 环境下的github账户添加SSH key时,需要在Git Bash执行如下命令: 第一步:检查已有的SSH keys $ ls -al ~/.ssh 第二步:生成新的SSH key $ ssh-keygen -t rsa -C "[email protected]" # Creates a new ssh key, using the provided email as a label # Generating public/private rsa key pai

Redis Protocol specification

Redis Protocol specification Redis clients communicate with the Redis server using a protocol called RESP (REdis Serialization Protocol). While the protocol was designed specifically for Redis, it can be used for other client-server software projects

redis 的安装使用 数据类型 以及操作指令 一

安装 redis 到 /usr/目录下 我这里安装的是redis-3.2.9.tar.gz tar zxvf  redis-3.2.9.tar.gz  -C  /usr 然后进行 执行编译命令 make   执行安装  make install 进入redis目录   ll查看所有文件 将 redis.conf文件 移动到usr/local/redis/etc目录下 再进入redis/src 目录 将以下文件移动到 usr/local/redis/bin目录下  方便以后管理 此时进入 usr/

Redis事务的应用

redis对事务的支持目前还比较简单.redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令. 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的.一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一 个队列中.当从此连接受到exec命令后,redis会顺序的执行

Redis 通信协议

本文和大家分享的主要是redis 通信协议相关内容,一起来看看吧,希望对大家 学习redis有所帮助. 几乎所有的主流编程语言都有Redis 的客户端,不考虑 Redis 非常流行的原因,如果站在技术的角度看原因还有两个: 1.  客户端与服务端之间的通信协议是在  TCP 协议  之上构建的. 客户端和服务器通过 TCP  连接来进行数据交互, 服务器默认的端口号为  6379  . 客户端和服务器发送的命令或数据一律以  \r\n  (CRLF )结尾. 1. Redis 制定了  RESP