数据库
首页 > 数据库> > 推送列表上的数据时,对键在redis中持有错误类型值的操作

推送列表上的数据时,对键在redis中持有错误类型值的操作

作者:互联网

创建了redis列表和设置键,如下所示

      public async Task MyMethod<T>()
                {
//if i'm doing following it is working
  string listname = "listname";
                    string listkey = "key";
                    RedisList<string> demodemo = new RedisList<string>(Settings, listname);
                    await demodemo.LeftPush(listkey);

//but i want to do it like below it is thoughing exception
            RedisList<string> list = new RedisList<string>(Settings, typeof(T).Name.ToString());
    string mykey = "myId";
    await list.LeftPush(mykey);

getting following error :

Result Message: StackExchange.Redis.RedisServerException : ERR
Operation against a key holding the wrong kind of value

解决方法:

作为旁注; RedisList< T>不是SE.Redis类型,因此我无法直接对其进行评论.但是:当您尝试做没有意义的事情时,该错误消息来自redis-server本身;例如,如果foo是一个字符串,则不能使用lpop foo或zcard foo.

因此,问题就变成了:存储的值是多少?我无法为您回答,但是:服务器可以.如果您熟悉redis-cli,则调试对象foo或对象编码foo可能会有用.尽管说实话,但通过猜测,您可能也会做得很好:

> strlen foo-如果可行,则为字符串
> hlen foo-如果可行,则为哈希
> llen foo-如果可行,它是一个列表
>惊吓的foo-如果可行,那就是一个集合
> zcard foo-如果可行,则为排序集

请注意,所有这些命令都可以通过SE.Redis获得,但是对于调查可疑数据库,redis-cli通常更容易.

可能发生的事情是您无意中重用了一个键名而没有意识到.这可能是一个很好的广告,说明了在键名中添加前缀的价值-SE.Redis在与数据库对话时可以自动为您完成的其他操作.

标签:stackexchange-redis,azure,caching,redis,c
来源: https://codeday.me/bug/20191027/1948364.html