是redis';s返回一个副本或引用的值
我听说过redis,但它对我的项目来说太重了。我决定自己写一些对象缓存,如下所示:是redis';s返回一个副本或引用的值,redis,c#-3.0,Redis,C# 3.0,我听说过redis,但它对我的项目来说太重了。我决定自己写一些对象缓存,如下所示: private List<Specification> _lsSpecification...// the object need cache, I will use R/W lock to protect it try { RWLock.EnterReadLock(); // do anything about _ls
private List<Specification> _lsSpecification...// the object need cache, I will use R/W lock to protect it
try
{
RWLock.EnterReadLock();
// do anything about _lsSpecification
}
catch (Exception ex)
{
}
finally
{
RWLock.ExitReadLock();
}
public Specifiction getSpecification(int id)
{
RWLock.EnterReadLock();
Specification specification = _lsSpecification.Find(c => c.ID == id).Clone;// assume a clone method is exist
RWLock.ExitReadLock();
return specification;
}
public List<Specification> getSpecifications()
{
RWLock.EnterReadLock();
List<Specification> lsAll = _lsSpecification.ToList();
RWLock.ExitReadLock();
return lsAll ;
}
确切地说,我想要得到的是一个指定的“规范”对象或整个列表。因此,我将方法编码如下:
private List<Specification> _lsSpecification...// the object need cache, I will use R/W lock to protect it
try
{
RWLock.EnterReadLock();
// do anything about _lsSpecification
}
catch (Exception ex)
{
}
finally
{
RWLock.ExitReadLock();
}
public Specifiction getSpecification(int id)
{
RWLock.EnterReadLock();
Specification specification = _lsSpecification.Find(c => c.ID == id).Clone;// assume a clone method is exist
RWLock.ExitReadLock();
return specification;
}
public List<Specification> getSpecifications()
{
RWLock.EnterReadLock();
List<Specification> lsAll = _lsSpecification.ToList();
RWLock.ExitReadLock();
return lsAll ;
}
公共规范getSpecification(int-id)
{
RWLock.EnterReadLock();
Specification Specification=\lsSpecification.Find(c=>c.ID==ID).Clone;//假设存在克隆方法
RWLock.exitradlock();
退货规格;
}
公共列表getSpecifications()
{
RWLock.EnterReadLock();
List lsAll=lsuspecification.ToList();
RWLock.exitradlock();
返回lsAll;
}
如上所示,我调用这些方法来获取对象,然后使用其复制值,它必须是安全的。但我仍然觉得抄袭是一种浪费。我想知道redis是否可以返回一个对象或列表,如果可以的话,值就是一个副本或引用?首先,redis一点也不重。它的安装和使用非常简单。您将毫不费力地启动并运行它。我强烈鼓励你尽可能尝试一下。有了它,您就有了一个简单、设计良好且广泛使用的C#库来访问您的Redis服务器 Redis是一个键值存储,其中的值可以是五种不同数据类型之一。在您的情况下,您可以将序列化的
规范
存储为字符串
,id为键,例如规范:1
调用GET
后,您必须反序列化您的规范。此规范
-对象将不会设置对象引用,因此它是一个副本
在集合中
可以存储所有ID。
您可以使用SMEMBERS
获取ID,并通过MGET
检索所有项目,然后再次将它们反序列化为新对象