因此,我查看了 redis 文档以及此处有关 redis 内部数据结构的问题,但是如果不查看 redis 源,我似乎无法得到有关“数据类型是什么”的答案排序列表的分数”。
我问的原因是我想我想要一个排序的集合,我们称之为“CHH”,其中的分数如下:“{u64}~{int}”,然后我的值是一个大逗号分隔的值字符串我的应用程序的“东西”,保证对于给定的分数是独一无二的。
我见过的所有示例通常都将分数显示为一个简单的整数值,认为他们说它可以按字母顺序 (sp?) 进行比较。分数有大小限制吗?它的内部表示是什么?
gzipstream定位.Net 3.5我遇到了麻烦的问题.这是我第一次使用gzipstream,但是我已经模拟了很多教程,包括这里,我仍然卡住了.
我的应用程序将数据表序列化为xml并插入数据库,将压缩数据存储到varbinary(max)字段以及未压缩缓冲区的原始长度.然后,当我需要它时,我检索这些数据并解压缩并重新创建数据表.解压缩似乎失败了.
编辑:遗憾的是,按照建议将GetBuffer更改为ToArray后,我的问题仍然存在.代码更新如下
压缩代码:
DataTable dt = new DataTable("MyUnit");
//do stuff with dt
//okay... now compress the table
using (MemoryStream xmlstream = new MemoryStream())
{
//instead of stream, use xmlwriter?
System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
settings.Encoding = Encoding.GetEncoding(1252);
settings.Indent = false;
System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(xmlstream, settings);
try
{
dt.WriteXml(writer);
writer.Flush();
}
catch (ArgumentException)
{
//likely an encoding issue... okay, base64 encode it
var base64 = Convert.ToBase64String(xmlstream.ToArray());
xmlstream.Write(Encoding.GetEncoding(1252).GetBytes(base64), 0, Encoding.GetEncoding(1252).GetBytes(base64).Length);
}
using (MemoryStream zipstream = new MemoryStream()) …Run Code Online (Sandbox Code Playgroud)