ServiceStack.Redis vs. CSRedisCore
第二次跳进这个坑了。不同的 Redis 客户端保存和读取数据的方式有些不一样的地方。
之前是在做 APP 的后台接口,用的 SpringBoot 的 Redis 包,和之前.Net 项目中使用的 ServiceStack.Redis 包保存到 Redis 服务器用的值会不同。最常用的 string
就不一样,ServiceStack.Redis 会在字符串的两头各加一个双引号,还有 Guid
,除了会加双引号之外,还会去除中间的半角横线。
这次则是在 .Net Core 项目中使用的 CSRedisCore 包,现象和 SpringBoot 中类似。
下面是几个常用类型的测试结果。
ServiceStack.Redis (.NET)
Set
String
javascript"2|0"
Int
javascript100
Guid
javascript"7a946a1aa6204cbf826327e3f9075987"
Object
json{ "Id": "7a946a1aa6204cbf826327e3f9075987", "Age": 10, "Name": "User Name", "Date": "/Date(1544692574127+0800)/", "Long": 2000, "Money": 4000.0006 }
long
javascript1000
Decimal
javascript200.1234
使用 CSRedisCore (.NET Core) 获取上面保存的值
String
javascript"2|0"
Int
javascript100
Guid
可以看到获取单个 Guid 类型的数据的结果是错误的
javascript"00000000-0000-0000-0000-000000000000"
Object
json{ "id": "7a946a1a-a620-4cbf-8263-27e3f9075987", "age": 10, "name": "User Name", "date": "2018-12-13T17:16:14.127+08:00", "long": 2000, "money": 4000.0006 }
long
javascript1000
Decimal
javascript200.1234
CSRedisCore (.NET Core)
Set
String
javascript2|0
Int
javascript100
Guid
javascript7a946a1a-a620-4cbf-8263-27e3f9075987
Object
json{ "Id": "7a946a1a-a620-4cbf-8263-27e3f9075987", "Age": 10, "Name": "User Name", "Date": "2018-12-13T17:22:08.2447883+08:00", "Long": 2000, "Money": 4000.0006 }
long
javascript1000
Decimal
javascript200.1234
使用 ServiceStack.Redis(.NET)获取上面保存的值
String
javascript2|0
Int
javascript100
Guid
javascript7a946a1a-a620-4cbf-8263-27e3f9075987
Object
json{ "Id": "7a946a1a-a620-4cbf-8263-27e3f9075987", "Age": 10, "Name": "User Name", "Date": "2018-12-13T17:22:08.2447883+08:00", "Long": 2000, "Money": 4000.0006 }
long
javascript1000
Decimal
javascript200.1234