【11】Redis .net 实例 StackExchange.Redis框架

1.创建测试项目并下载nuget包:StackExchange.Redis

PM> Install-Package StackExchange.Redis



2.创建 RedisHelper类

public class RedisHelper
{
	private static string _conn = "127.0.0.1:6379";

	#region string类型
	/// <summary>
	/// 根据Key获取值
	/// </summary>
	/// <param name="key">键值</param>
	/// <returns>System.String.</returns>
	public static string StringGet(string key)
	{
		try
		{
			using (var client = ConnectionMultiplexer.Connect(_conn))
			{
				return client.GetDatabase().StringGet(key);
			}
		}
		catch (Exception)
		{
			return null;
		}
	}

	/// <summary>
	/// 批量获取值
	/// </summary>
	public static string[] StringGetMany(string[] keyStrs)
	{
		var count = keyStrs.Length;
		var keys = new RedisKey[count];
		var addrs = new string[count];

		for (var i = 0; i < count; i++)
		{
			keys[i] = keyStrs[i];
		}
		try
		{
			using (var client = ConnectionMultiplexer.Connect(_conn))
			{
				var values = client.GetDatabase().StringGet(keys);
				for (var i = 0; i < values.Length; i++)
				{
					addrs[i] = values[i];
				}
				return addrs;
			}
		}
		catch (Exception)
		{
			return null;
		}
	}


	/// <summary>
	/// 单条存值
	/// </summary>
	/// <param name="key">key</param>
	/// <param name="value">The value.</param>
	/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
	public static bool StringSet(string key, string value)
	{

		using (var client = ConnectionMultiplexer.Connect(_conn))
		{
			return client.GetDatabase().StringSet(key, value);
		}
	}


	/// <summary>
	/// 批量存值
	/// </summary>
	/// <param name="keysStr">key</param>
	/// <param name="valuesStr">The value.</param>
	/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
	public static bool StringSetMany(string[] keysStr, string[] valuesStr)
	{
		var count = keysStr.Length;
		var keyValuePair = new KeyValuePair<RedisKey, RedisValue>[count];
		for (int i = 0; i < count; i++)
		{
			keyValuePair[i] = new KeyValuePair<RedisKey, RedisValue>(keysStr[i], valuesStr[i]);
		}
		using (var client = ConnectionMultiplexer.Connect(_conn))
		{
			return client.GetDatabase().StringSet(keyValuePair);
		}
	}

	#endregion

	#region 泛型
	/// <summary>
	/// 存值并设置过期时间
	/// </summary>
	/// <typeparam name="T"></typeparam>
	/// <param name="key">key</param>
	/// <param name="t">实体</param>
	/// <param name="ts">过期时间间隔</param>
	/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
	public static bool Set<T>(string key, T t, TimeSpan ts)
	{
		var str = JsonConvert.SerializeObject(t);
		using (var client = ConnectionMultiplexer.Connect(_conn))
		{
			return client.GetDatabase().StringSet(key, str, ts);
		}
	}

	/// <summary>
	/// 
	/// 根据Key获取值
	/// </summary>
	/// <typeparam name="T"></typeparam>
	/// <param name="key">The key.</param>
	/// <returns>T.</returns>
	public static T Get<T>(string key) where T : class
	{
		using (var client = ConnectionMultiplexer.Connect(_conn))
		{
			var strValue = client.GetDatabase().StringGet(key);
			return string.IsNullOrEmpty(strValue) ? null : JsonConvert.DeserializeObject<T>(strValue);
		}
	}
	#endregion
}


3.主程序调用

    class Program
    {
        static void Main(string[] args)
        {
            string key = "test", value = "http://www.sina.com";
            bool isRight = RedisHelper.StringSet(key, value);
            if(isRight)
                Console.WriteLine("保存Redis:key.{0} value.{1}成功", key, value);
            string result = RedisHelper.StringGet(key);
            Console.WriteLine("Redis:key.{0} value.{1}", key, result);
            var model = new TestModel() { Id = 100, Name = "RedisValue" };
            isRight = RedisHelper.Set<TestModel>("model", model, new TimeSpan(0, 10, 0));
            var modelResult = RedisHelper.Get<TestModel>("model");
            if(modelResult != null)
                Console.WriteLine("RedisModel:Id.{0} Name.{1}", modelResult.Id, modelResult.Name);
            Console.ReadLine();
        }
    }

    [Serializable]
    public class TestModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

4.运行结果


Windows环境安装参考上一篇



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值