在redis中将数据压入列表时,对持有错误类型值的键进行操作
本文关键字:类型 有错误 操作 redis 数据 列表 | 更新日期: 2023-09-27 18:10:47
创建redis列表并设置键,如下面的get me error
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);
出现以下错误:
Result Message: StackExchange.Redis.RedisServerException: ERR对持有错误类型值的键的操作
作为旁注;RedisList<T>
不是SE。Redis类型,所以我不能直接评论。然而,错误信息来自redis-server本身,当你试图做的事情没有意义;例如,如果foo
是字符串,则不能输入lpop foo
或zcard foo
。
debug object foo
或object encoding foo
可能会很有用。不过,说实话,你也可以这样猜:
-
strlen foo
-如果这个工作,它是一个字符串 -
hlen foo
-如果这个工作,它是一个哈希 -
llen foo
-如果这个工作,它是一个列表 -
scard foo
-如果这个工作,它是一个集合 -
zcard foo
-如果这个工作,它是一个排序集
请注意,所有这些命令都可以通过SE获得。Redis,但要调查可疑数据库,Redis -cli通常更容易。
可能发生的情况是您无意中重用了一个键名而没有意识到这一点。这可能是一个很好的广告,说明在键名中添加前缀的价值。当你与数据库对话时,Redis可以自动为你做。