Windows下Memcached在.Net程序中的实际运用(从Memcached客户端Enyim的库的编译到实际项目运用) 转发

2021-06-06 08:04

阅读:655

append:向一个已经存在的key追加数据、追加的数据类型是一个byte[]数组,如果key不存在、则返回false 反之返回true。并且其casUnique的值会+1。因此可能引起cas操作的回滚。

bool Store:有五个重载。可对key执行修改、重写、和新增三个操作。并能在value的指定位置进行写入或复写数据,同时还能更新该缓存过期时间以及在间隔多少秒之后缓存失效。具体的读者可以看源代码中MemcachedClient类的具体的实现和注释。返回true表示成功、false表示失败。

ServerStats Stats:获取cache服务器的运行状态。返回一个ServerStats类型、该类型中会包含服务器上的cache当前状态以及item数量get次数miss次数等信息。

bool Remove:用于删除缓存中的指定key值。返回true表示成功、false表示失败

void FlushAll:让cache中的所有item都失效、但是未清除、但是我们也无法在通过命令获取。不过可以从itemscount中看到任然有那么多个item在cache中。但此时状态已经标记为失效了。

★long Increment(string key, uint amount)和long Decrement(string key, uint amount):在key存在的情况下、如果原来的key值不是一个string类型的数字时、此时会将原来的value值变为此时的amount对象。如果原来的值是一个string类型的数字的话。则会把该key的value修改为该key原来的value + amount的结果。Enyim在此处对于数据类型的实现有一定的问题。由于几乎不使用因此不再深入解释这个问题。这两个方法执行成功之后都会返回操作之后的value值。如果失败则返回数字0。key不存在的时候返回-1

object get:取回一个key对应的值。如果没找到key则返回null。这是我们用的最多的几个方法之一。根据key获取对应的值。也可以根据一个IEnumerable获取多个key的值。最简单的就是直接使用一个List来装多个key。把这个list传递进去即可,

T get:取回一个T对象。如果没找到key则返回null。

bool CheckAndSet:检查并更新key对应的值。首先会检查key的casUnique值、如果这个值和本客户端最后一次获取该key的casUnique不同、则返回false,不进行更新。否则进行值的更新。这个方法是为了解决在多线程下、由于命令执行队列的非原子性可能会导致你获取该key之后、其他线程同时获取并修改了该key、而在你提交更新的时候可能会把其他线程提交的数据覆盖掉。因此或先检查获取的casUnique的值和cache中该key的是否一致。不一致则表明有其他线程已经操作过了需要你再次获取改key后重现提交修改。以保证不会弄脏缓存数据。CheckAndSet其实是gets和cas命令的结合使用。


评论


亲,登录后才可以留言!