Redis可以做哪些事儿?

这里介绍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);
                }
            }

  

时间: 2024-10-12 20:10:53

Redis可以做哪些事儿?的相关文章

redis可以做什么?

redis可以做什么? 1.缓存,毫无疑问这是Redis当今最为人熟知的使用场景.在提升服务器性能方面非常有效: 2.排行榜,如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的SortSet数据结构能够非常方便搞定: 3.计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数.用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力:限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力:

Redis可以用来做什么

redis可以用来做什么?以博客帖子为例大概说说,当然redis的其他功能还有很多,后续在做介绍. Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」. 记录帖子的点赞数.评论数和点击数 (hash) --针对帖子的一对多记录, key为数名称,value为各种数的值. 记录用户的帖子 ID 列表 (排序),便于快速显示用户的帖子列表 (zset) -- 记录id而不是文章是为了需要减少内存,同时z

基于CentOS的Hadoop分布式环境的搭建——你要知道自己到底该做哪些事儿

首先,要说明的一点的是,我不想重复发明轮子.如果想要搭建Hadoop环境,网上有很多详细的步骤和命令代码,我不想再重复记录. 其次,我要说的是我也是新手,对于Hadoop也不是很熟悉.但是就是想实际搭建好环境,看看他的庐山真面目,还好,还好,最好看到了.当运行wordcount词频统计的时候,实在是感叹hadoop已经把分布式做的如此之好,即使没有分布式相关经验的人,也只需要做一些配置即可运行分布式集群环境. 好了,言归真传. 在搭建Hadoop环境中你要知道的一些事儿: 1.hadoop运行于

redis 如何做内存优化?

edis所有的数据都在内存中,而内存又是非常宝贵的资源.对于如何优化内存使用一直是Redis用户非常关注的问题.本文让我们深入到Redis细节中,学习内存优化的技巧.分为如下几个部分: 一.redisObject对象 二.缩减键值对象 三.共享对象池 四.字符串优化 五.编码优化 六.控制key的数量 一. redisObject对象 Redis存储的所有值对象在内部定义为redisObject结构体,内部结构如下图所示. Redis存储的数据都使用redisObject来封装,包括string

PHP 使用 Redis 来做队列服务

<?php class Queue { protected $redis; protected $key; public function __construct(\Redis $redis, $key) { $this->redis = $redis; $this->key = $key; } public function pop() { return $this->redis->lPop($this->key); // 左边出 } public function

一天过去了 redis就做了这点。。。。。

版本:CentOS Linux release 7.2.1511 (Core) 内核:Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux #先调整时间,格式如下:#date -s 2017-08-12#date -s 13:54:00 mkdir /opopcd /opopyum -y install wget gc

PHP程序连接多个redis实例做缓存

1.redis配置: $CONFIG_REDIS = array(    array('host' => '192.168.19.29', 'port' => '6379', 'dbIndex' => 0, 'password'=>'3695a77369be021075b480048142a3c2'),    array('host' => '192.168.19.30', 'port' => '6379', 'dbIndex' => 0, 'password'=

Springboot2.x+shiro+redis整合填坑 (一)redis只做缓存的情况

主要记录关键和有坑的地方 前提: 1.SpringBoot+shiro已经集成完毕,如果没有集成,先查阅之前的Springboot2.0 集成shiro权限管理 2.redis已经安装完成 3.redis客户端使用Lettuce,这也是sprinboot2.0后默认的,与jedis的区别,自行百度 4.json使用springboot默认的 一.依赖 <dependency> <groupId>org.springframework.boot</groupId> <

redis能做什么

缓存 分布式锁 记录帖子的点赞数.评论数和点击数 (hash). 记录用户的帖子 ID 列表 (排序),便于快速显示用户的帖子列表 (zset). 记录帖子的标题.摘要.作者和封面信息,用于列表页展示 (hash). 记录帖子的点赞用户 ID 列表,评论 ID 列表,用于显示和去重计数 (zset). 缓存近期热帖内容 (帖子内容空间占用比较大),减少数据库压力 (hash). 记录帖子的相关文章 ID,根据内容推荐相关帖子 (list). 如果帖子 ID 是整数自增的,可以使用 Redis 来