ServiceStack Redis是什么,urn又是什么?

7

"urn:"代表什么意思?

我在使用ServiceStack Redis示例。似乎这是一种命名约定,数据库中许多键以"urn:"开头。

通过调用somePoco.CreateUrn();-->"urn:somePoco:123"它会在数据库中创建一个键。

它的优点是RedisTypedClient可以在以下代码中识别它: 例如:

var redisSomePoco = redis.As<SomePoco>();
var somePoco = redisSomePoco.GetById("123"); //it knows I want value of key "urn:somePoco:123"
redisSomePoco.Store(somePoco); //it knows how to store my poco value in key "urn:somePoco:123"
//"{\"Id\":123,\"DisplayName\":\"Michael\"}"

我理解得对吗?还是差得远呢?

1
对于通用术语(不考虑Redis使用):http://en.wikipedia.org/wiki/Uniform_Resource_Name - Thilo
谢谢你的帮助!是因为使用标准的“urn:”前缀,RedisTypedClient可以识别其poco对象类型吗?我的理解是正确的吗? - Tom
1个回答

11

它代表统一资源名称

由于Redis中没有命名空间或模式的概念,我们使用完全限定的键,格式为:

urn:{TypeName}:{Id}

使用ServiceStack的C# RedisClient类型化 API,可以在Redis中唯一存储和标识任何POCO实例。 RedisAdmin UI也利用这种约定,提供分层的树形结构来访问您的数据,即使Redis本身并没有这样的概念。

嗨Mythz。我也看了一下在我的本地主机上安装的RedisAdmin UI,并从那里猜测了一下。谢谢你帮助我理解结构 :) - Tom
1
很希望能够对这个名称有更多的控制。例如,如果您想将同一个对象存储于不同的目的地,则可以自定义Namespaceprefix,但是URL看起来有点奇怪:urn:mypurpose:urn:{TypeName}:{Id}(我有两个URN)。还是有更简单的方法吗? - unreal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接