您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > ServiceStack.Redis之IRedisClient
ServiceStack.Redis之IRedisClient第三篇事实上,IRedisClient里面的很多方法,其实就是Redis的命令名。只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这些方法。一、属性IRedisClient的属性如下:属性说明ConnectTimeout连接超时Db当前数据库的ID或下标DbSize当前数据库的key的数量HadExceptionsHashes存储复杂对象,一个value中有几个fieldHostRedis的Server服务器主机地址Info返回关于Redis服务器的各种信息和统计数值LastSave最近一次Redis成功将数据保存到磁盘上的时间Lists当前数据库中所有的List集合Password密码PortRedis的Server端口RetryCount重试次数RetryTimeout重试超时SendTimeout发送超时Sets当前数据库中所有的HashSetT集合SortedSets当前数据库中所有的SortedSetT集合this[stringkey]通过索引的方式(key)访问一个字符串类型值代码示例:RClient.AddItemToSet(蜀国,刘备);RClient.AddItemToSet(蜀国,关羽);RClient.AddItemToSet(蜀国,张飞);IHasNamedIRedisSetrr=RClient.Sets;HashSetstringHashSetString=rr[蜀国].GetAll();foreach(stringstrinHashSetString){Response.Write(str);}二、IRedisClient数据操作1、ICacheClient接口IRedisClient实现了接口ICacheClient,其中ICacheClient主要提供的功能如下:方法说明Add根据传入的key-value添加一条记录,当key已存在返回falseFlushAll使所有缓存失效(清除Redis所有数据库的所有Key)Get根据传入的key获取一条记录的值GetAll根据传入的多个key获取多条记录的值Remove根据传入的key移除一条记录RemoveAll根据传入的多个key移除多条记录Replace根据传入的key覆盖一条记录的值,当key不存在不会添加Set根据传入的key修改一条记录的值,当key不存在则添加SetAll根据传入的多个key覆盖多条记录IncrementDecrement特别说明,比如添加的主要方法包括两个重载,一个多了个DateTime类型参数,一个多了TimeSpan类型的参数。这两个都是缓存失效的时间(相当于缓存依赖里的绝对过期时间)。DateTime失效点:到达该时间点,立即失效;TimeSpan失效点:经过该时间段,立即失效;简单示例:publicActionResultIndex(){RedisClientManagerConfigRedisConfig=newRedisClientManagerConfig();RedisConfig.AutoStart=true;RedisConfig.MaxReadPoolSize=60;RedisConfig.MaxWritePoolSize=60;PooledRedisClientManagerprcm=newPooledRedisClientManager(newListstring(){127.0.0.1},newListstring(){127.0.0.1},RedisConfig);using(IRedisClientRClient=prcm.GetClient()){RClient.Add(c1,缓存1);RClient.Set(c1,缓存2);RClient.Replace(c1,缓存3);Response.Write(RClient.Getstring(c1));RClient.Remove(c1);Response.Write(RClient.Getstring(c1)==null);}returnContent();}2、简单功能当然,除了实现ICacheClient接口的功能外,对于基本操作,实际上也还有很多功能方法说明AppendToValue根据Key将参数value追加到原有值的结尾ContainsKey判断Key在本数据库内是否已被使用(包括各种类型、内置集合等等)GetAllKeys获取所有的Keys集合DecrementValue根据指定的Key,将值减1(仅整型有效)DecrementValueBy根据指定的Key,将值减去指定值(仅整型有效)IncrementValue根据指定的Key,将值加1(仅整型有效)IncrementValueBy根据指定的Key,将值加上指定值(仅整型有效)RenameKey重命名一个Key,值不变SearchKeys从数据库中查找名称相等的Keys的集合,特殊模式如h[ae]llo,仅英文有效。GetRandomKey随机获取一个已经被使用的KeyGetValue根据Key获取值,只对string类型有效GetValues根据输入的多个Key获取多个值,支持泛型GetTimeToLive获取指定Key的项距离失效点的TimeSpanGetSortedSetCount获取已排序集合的项的数目,参数支持下标以及score筛选ExpireEntryAt根据指定的key设置一项的到期时间(DateTime)ExpireEntryIn根据指定的key设置一项的到期时间(TimeSpan)FlushDb清除本数据库的所有数据FlushAll清除所有数据库的所有数据Shutdown停止所有客户端,保存,关闭Redis服务Save保存数据DB文件到硬盘SaveAsync异步保存RewriteAppendOnlyFileAsync只在异步情况下将数据追加到服务器文件WriteAllPublishMessage将Message发送到指定的频道StoreObjectGetValuesMap以键值对的方式返回值类型相同的多条数据,支持泛型与返回字符串。字符串SetEntry根据Key修改一个值,存在则覆盖。(只能设置字符串)SetEntryIfNotExists根据Key设置一个值,仅仅当Key不存在时有效,如Key已存在则不修改(只支持字符串)SetEntryIfNotExists根据Key设置一个值,返回旧值。GetEntryType根据Key获取当前存储的值是什么类型:None=0String=1List=2Set=3SortedSet=4Hash=53、内置集合比如,IRedisClient支持在内部维护如下集合类型的数据:ListT排序的ListT(.Net4.0后的SortedSet)HashSetT关于如下4种类型数据的操作:方法说明AddItemToList添加一个项到内部的ListTAddItemToSet添加一个项到内部的HashSetTAddItemToSortedSet添加一个项到内部的排序ListT,其中重载方法多了个score:排序值。优先按照score从小-大排序,否则按值小到大排序AddRangeToList一次过将参数中的ListT中的多个值添加入内部的ListTAddRangeToSet一次过将参数中的HashSetT中的多个值添加入内部的HashSetTAddRangeToSortedSet一次过将参数中的ListT中的多个值添加到内部ListT,重载方法的score表示排序值。GetAllItemsFromList获取指定ListId的内部ListT的所有值GetAllItemsFromSet获取指定SetId的内部HashSetT的所有值GetAllItemsFromSortedSet获取指定ListId的内部已排序ListT的所有值GetAllItemsFromSortedSetDesc获取指定ListId的内部已排序ListT的所有值,不过获取的值是倒序排列后的。GetRangeFromList获取指定ListId的内部ListT中指定下标范围的数据GetRangeFromSortedList获取指定ListId的内部已排序ListT中指定下标范围的数据GetRangeFromSortedSet获取指定SetId的内部HashSetT中指定下标范围的数据GetRangeFromSortedSetByHighestScore获取指定SetId的内部HashSetT中按照score由高-低排序后的分值范围的数据,并且支持skip、takeGetRangeFromSortedSetByLowestScore同上,只不过是按score分值由低-高取一定范围内的数据GetRangeFromSortedSetDesc按倒序获取内部HashSetT的指定下标范围内的数据GetRangeWithScoresFromSortedSet与From相同,只不过获取的是键值对,数据中带分值scoreGetRangeWithScoresFromSortedSetByHighestScore同上GetRangeWithScoresFromSortedSetByLowestScore同上GetRangeWithScoresFromSortedSetDesc同上GetAllWithScoresFromSortedSet获取指定ListId的已排序的内部ListT与其scoreGetSortedItemsFromList从指定ListId的ListT中获取按指定排序的集合,支持Skip,TakeGetSortedEntryValues从指定ListId的ListT中获取经过排序指定开始位置与个数的项RemoveAllFromList移除指定ListId的内部ListTRemoveItemFromList移除指定ListId的内部ListT中第二个参数值相等的那一项RemoveItemFromSet从指定SetId的内部HashSetT中移除与第二个参数值相等的那一项RemoveItemFromSortedSet从指定ListId中已排序的内部ListT中移除值相等的那一项RemoveRangeFromSortedSet从指定ListId已排序的ListT中移除指定下标范围的项RemoveRangeFromSortedSetByScore从指定ListId已排序的ListT中移除指定score范围的项RemoveStartFromList从指定ListId移除开头那一项RemoveEndFromList从指定ListId移除末尾那项BlockingRemoveStartFromList阻塞地从指定ListId移除开头那一项BlockingRemoveStartFromListsRemoveEntry根据传入的多个ListId,清除多个内部ListTRemoveAllLuaScripts清除所有的Lua脚本缓存RemoveEntryFromHashGetItemFromList根据ListId和下标获取一项GetItemIndexInSortedSet根据List和值,获取内置的排序后的ListT的下标GetItemIndexInSortedSetDesc同上,不过顺序相反GetItemScoreInSortedSet根据传入的ListId和值获取内置ListT项的scoreGetListCount根据ListId,获取内置的ListT的项数GetSetCount根据SetId,获取内置的HashSetT的项数GetInterse
本文标题:ServiceStack.Redis之IRedisClient
链接地址:https://www.777doc.com/doc-4356965 .html