首页 > 其他 > 详细

Redis可以做哪些事儿?

时间:2016-04-09 13:40:24      阅读:191      评论:0      收藏:0      [点我收藏+]

    这里介绍Redis可以做的其中两件事:

  1.提供缓存功能,作为缓存服务器;

  2.轻量级的消息队列(MQ)进行使用.

 

 /// <summary>
    /// Redis帮助类
    /// </summary>
    public class RedisHelper
    {
        /// <summary>
        /// 往消息队列中放入数据
        /// </summary>
        /// <param name="listId">队列Id</param>
        /// <param name="value">数据</param>
        public static void Enqueue(string listId, string value)
        {
            using (IRedisClient client = RedisManager.ClientManager.GetClient())
            {
                client.EnqueueItemOnList(listId, value);
            }
            return;
        }

        /// <summary>
        /// 从消息队列中取出数据
        /// </summary>
        /// <param name="listId">队列Id</param>
        /// <returns></returns>
        public static string Dequeue(string listId)
        {
            using (IRedisClient client = RedisManager.ClientManager.GetClient())
            {
                return client.DequeueItemFromList(listId);
            }
        }

        /// <summary>
        /// 从消息队列中取出数据
        /// </summary>
        /// <param name="redisClient"></param>
        /// <param name="listId"></param>
        /// <returns></returns>
        public static string Dequeue(IRedisClient redisClient, string listId)
        {
            return redisClient.DequeueItemFromList(listId);
        }

        /// <summary>
        /// Redis写
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key">键</param>
        /// <param name="value">值</param>
        /// <param name="cacheTime">缓存时间(分钟)</param>
        /// <returns></returns>
        public static bool Set<T>(string key, T value, int cacheTime = 0)
        {
            using (IRedisClient client = RedisManager.ClientManager.GetClient())
            {
                if (cacheTime <= 0)
                {
                    return client.Set<T>(key, value);
                }
                return client.Set<T>(key, value, DateTime.Now.AddMinutes(cacheTime));
            }
        }

        /// <summary>
        /// Redis读
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key">键</param>
        /// <returns></returns>
        public static T Get<T>(string key)
        {
            using (IRedisClient client = RedisManager.ClientManager.GetClient())
            {
                return client.Get<T>(key);
            }
        }
    }

    /// <summary>
    /// Redis管理类
    /// </summary>
    public class RedisManager
    {
        public static PooledRedisClientManager ClientManager { get; private set; }
        static RedisManager()
        {
            RedisClientManagerConfig redisConfig = new RedisClientManagerConfig();
            redisConfig.MaxWritePoolSize = 128;
            redisConfig.MaxReadPoolSize = 128;
            ClientManager = new PooledRedisClientManager(new string[] { "127.0.0.1" }, new string[] { "127.0.0.1" }, redisConfig);
        }
    }

  

消息队列数据消费方示例代码:

 JavaScriptSerializer serializer = new JavaScriptSerializer();
            //数据消费者
            while (true)
            {
                string data = RedisHelper.Dequeue("sendActiveEmail");
                if (data != null)
                {
                    EmailModel emailModel = (EmailModel)serializer.Deserialize(data, typeof(EmailModel));
                    Console.WriteLine("发送邮件:" + emailModel.MailTo);
                    CommonHelper.SendEmail(emailModel.MailTo, emailModel.Subject, emailModel.Body, true);
                    Console.WriteLine("发送邮件完成");
                }
                else
                {
                    Thread.Sleep(500);
                }
            }

  

 

Redis可以做哪些事儿?

原文:http://www.cnblogs.com/miaosha5s/p/5371347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!