ItGo.me - 专注IT技术分享

首页 > Redis > Redis操作的封装类

Redis操作的封装类

时间:2016-08-28来源:网友分享 点击:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using ServiceStack.Redis;namespace Com.QFGame.QNX.Community.Redis{public class RedisBase{private static string RedisPath = System.Configuration.ConfigurationSettings.AppSettings["RedisPath"];#region -- 连接信息 --//10.0.18.8:6379public static PooledRedisClientManager prcm = CreateManager(new string[] { RedisPath }, new string[] { RedisPath });private static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts){// 支持读写分离,均衡负载return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig{MaxWritePoolSize = 5, // “写”链接池链接数MaxReadPoolSize = 5, // “读”链接池链接数AutoStart = true,});}#endregion#region -- Item --/// <summary>/// 设置单体/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="t"></param>/// <param name="timeSpan"></param>/// <returns></returns>public static bool Item_Set<T>(string key, T t){try{using (IRedisClient redis = prcm.GetClient()){return redis.Set<T>(key, t, new TimeSpan(1, 0, 0));}}catch (Exception ex){// LogInfo}return false;}/// <summary>/// 获取单体/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <returns></returns>public static T Item_Get<T>(string key) where T : class{using (IRedisClient redis = prcm.GetClient()){return redis.Get<T>(key);}}/// <summary>/// 移除单体/// </summary>/// <param name="key"></param>public static bool Item_Remove(string key){using (IRedisClient redis = prcm.GetClient()){return redis.Remove(key);}}#endregion#region -- List --public static void List_Add<T>(string key, T t){using (IRedisClient redis = prcm.GetClient()){var redisTypedClient = redis.GetTypedClient<T>();redisTypedClient.AddItemToList(redisTypedClient.Lists[key], t);}}public static bool List_Remove<T>(string key, T t){using (IRedisClient redis = prcm.GetClient()){var redisTypedClient = redis.GetTypedClient<T>();return redisTypedClient.RemoveItemFromList(redisTypedClient.Lists[key], t) > 0;}}public static void List_RemoveAll<T>(string key){using (IRedisClient redis = prcm.GetClient()){var redisTypedClient = redis.GetTypedClient<T>();redisTypedClient.Lists[key].RemoveAll();}}public static int List_Count(string key){using (IRedisClient redis = prcm.GetClient()){return redis.GetListCount(key);}}public static List<T> List_GetRange<T>(string key, int start, int count){using (IRedisClient redis = prcm.GetClient()){var c = redis.GetTypedClient<T>();return c.Lists[key].GetRange(start, start + count - 1);}}public static List<T> List_GetList<T>(string key){using (IRedisClient redis = prcm.GetClient()){var c = redis.GetTypedClient<T>();return c.Lists[key].GetRange(0, c.Lists[key].Count);}}public static List<T> List_GetList<T>(string key, int pageIndex, int pageSize){int start = pageSize * (pageIndex - 1);return List_GetRange<T>(key, start, pageSize);}/// <summary>/// 设置缓存过期/// </summary>/// <param name="key"></param>/// <param name="datetime"></param>public static void List_SetExpire(string key, DateTime datetime){using (IRedisClient redis = prcm.GetClient()){redis.ExpireEntryAt(key, datetime);}}#endregion#region -- Set --public static void Set_Add<T>(string key, T t){using (IRedisClient redis = prcm.GetClient()){var redisTypedClient = redis.GetTypedClient<T>();redisTypedClient.Sets[key].Add(t);}}public static bool Set_Contains<T>(string key, T t){using (IRedisClient redis = prcm.GetClient()){var redisTypedClient = redis.GetTypedClient<T>();return redisTypedClient.Sets[key].Contains(t);}}public static bool Set_Remove<T>(string key, T t){using (IRedisClient redis = prcm.GetClient()){var redisTypedClient = redis.GetTypedClient<T>();return redisTypedClient.Sets[key].Remove(t);}}#endregion#region -- Hash --/// <summary>/// 判断某个数据是否已经被缓存/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="dataKey"></param>/// <returns></returns>public static bool Hash_Exist<T>(string key, string dataKey){using (IRedisClient redis = prcm.GetClient()){return redis.HashContainsEntry(key, dataKey);}}/// <summary>/// 存储数据到hash表/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="dataKey"></param>/// <returns></returns>public static bool Hash_Set<T>(string key, string dataKey, T t){using (IRedisClient redis = prcm.GetClient()){string value = ServiceStack.Text.JsonSerializer.SerializeToString<T>(t);return redis.SetEntryInHash(key, dataKey, value);}}/// <summary>/// 移除hash中的某值/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="dataKey"></param>/// <returns></returns>public static bool Hash_Remove(string key, string dataKey){using (IRedisClient redis = prcm.GetClient()){return redis.RemoveEntryFromHash(key, dataKey);}}/// <summary>/// 移除整个hash/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="dataKey"></param>/// <returns></returns>public static bool Hash_Remove(string key){using (IRedisClient redis = prcm.GetClient()){return redis.Remove(key);}}/// <summary>/// 从hash表获取数据/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="dataKey"></param>/// <returns></returns>public static T Hash_Get<T>(string key, string dataKey){using (IRedisClient redis = prcm.GetClient()){string value = redis.GetValueFromHash(key, dataKey);return ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(value);}}/// <summary>/// 获取整个hash的数据/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <returns></returns>public static List<T> Hash_GetAll<T>(string key){using (IRedisClient redis = prcm.GetClient()){var list = redis.GetHashValues(key);if (list != null && list.Count > 0){List<T> result = new List<T>();foreach (var item in list){var value = ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(item);result.Add(value);}return result;}return null;}}/// <summary>/// 设置缓存过期/// </summary>/// <param name="key"></param>/// <param name="datetime"></param>public static void Hash_SetExpire(string key, DateTime datetime){using (IRedisClient redis = prcm.GetClient()){redis.ExpireEntryAt(key, datetime);}}#endregion#region -- SortedSet --/// <summary>///  添加数据到 SortedSet/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="t"></param>/// <param name="score"></param>public static bool SortedSet_Add<T>(string key, T t, double score){using (IRedisClient redis = prcm.GetClient()){string value = ServiceStack.Text.JsonSerializer.SerializeToString<T>(t);return redis.AddItemToSortedSet(key, value, score);}}/// <summary>/// 移除数据从SortedSet/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="t"></param>/// <returns></returns>public static bool SortedSet_Remove<T>(string key, T t){using (IRedisClient redis = prcm.GetClient()){string value = ServiceStack.Text.JsonSerializer.SerializeToString<T>(t);return redis.RemoveItemFromSortedSet(key, value);}}/// <summary>/// 修剪SortedSet/// </summary>/// <param name="key"></param>/// <param name="size">保留的条数</param>/// <returns></returns>public static int SortedSet_Trim(string key, int size){using (IRedisClient redis = prcm.GetClient()){return redis.RemoveRangeFromSortedSet(key, size, 9999999);}}/// <summary>/// 获取SortedSet的长度/// </summary>/// <param name="key"></param>/// <returns></returns>public static int SortedSet_Count(string key){using (IRedisClient redis = prcm.GetClient()){return redis.GetSortedSetCount(key);}}/// <summary>/// 获取SortedSet的分页数据/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="pageIndex"></param>/// <param name="pageSize"></param>/// <returns></returns>public static List<T> SortedSet_GetList<T>(string key, int pageIndex, int pageSize){using (IRedisClient redis = prcm.GetClient()){var list = redis.GetRangeFromSortedSet(key, (pageIndex - 1) * pageSize, pageIndex * pageSize - 1);if (list != null && list.Count > 0){List<T> result = new List<T>();foreach (var item in list){var data = ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(item);result.Add(data);}return result;}}return null;}/// <summary>/// 获取SortedSet的全部数据/// </summary>/// <typeparam name="T"></typeparam>/// <param name="key"></param>/// <param name="pageIndex"></param>/// <param name="pageSize"></param>/// <returns></returns>public static List<T> SortedSet_GetListALL<T>(string key){using (IRedisClient redis = prcm.GetClient()){var list = redis.GetRangeFromSortedSet(key, 0, 9999999);if (list != null && list.Count > 0){List<T> result = new List<T>();foreach (var item in list){var data = ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(item);result.Add(data);}return result;}}return null;}/// <summary>/// 设置缓存过期/// </summary>/// <param name="key"></param>/// <param name="datetime"></param>public static void SortedSet_SetExpire(string key, DateTime datetime){using (IRedisClient redis = prcm.GetClient()){redis.ExpireEntryAt(key, datetime);}}//public static double SortedSet_GetItemScore<T>(string key,T t)//{//    using (IRedisClient redis = prcm.GetClient())//    {//        var data = ServiceStack.Text.JsonSerializer.SerializeToString<T>(t);//        return redis.GetItemScoreInSortedSet(key, data);//    }//    return 0;//}#endregion}}

  可以使用redis desktop manager管理工具查看服务器缓存中的数据

Redis操作的封装类

Redis操作的封装类  讨论


Redis的WEB界面管理工具 phpRedisAdmin

有过传统LAMP经验的同学肯定都对phpmyadmin非常熟悉,phpmyadmin是一个PHP的MySQL WEB管理工具,非常实用也非常好用。而本文要介绍的是一个叫phpRedisAdmin的工具,从名字上你就能看到,它是一个PHP的...

PHP缓存之redis中文文档

phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: (支持redis 2.0.4) Redis::__construct构造函数 $redis = new Redis(); c...

Redis3集群搭建

安装ruby 1)sudo apt-get install ruby 2)sudo apt-get install ruby-full rubygems 3)sudo gem install redis(这条命令话费时间较长,需等待下) 创建节点文件夹 /usr/local/ 2.sudo mkdir cluster 3.sudo mkdir 7000 7001 7002 7003 7004 7005...

using System;using System.Collections.Generic;using System.Linq;using System.Text;using ServiceStack.Redis;namespace Com.QFGame.QNX.Community.Redis{public class RedisBase{private static string RedisPath = System.Configuration.ConfigurationSettings.Ap
------分隔线----------------------------