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);
}
}

  

附:

Redis驱动开发包(.dll):

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

  1. Redis能做什么?不能做什么?

    https://blog.csdn.net/u014229282/article/details/81174202 最近阅读了<redis设计与实现>,这是一本比较枯燥的书,毕竟涉及到re ...

  2. redis可以做什么?

    redis可以做什么? 1.缓存,毫无疑问这是Redis当今最为人熟知的使用场景.在提升服务器性能方面非常有效: 2.排行榜,如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的So ...

  3. Redis可以用来做什么?(摘自http://www.lianpenglin.cc廉鹏林博客)

    Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」.Redis 以其超高的性能.完美的文档.简洁易懂的 ...

  4. Redis入门(二)-Redis能够做什么

    引言 在上篇文章中,我们讲述了Redis的基本知识让读者对Redis有了基本的了解.那么这一节我们就来看一下Redis究竟能做什么. 上一节我们提到了Redis可用作数据库,高速缓存和消息队列代理.这 ...

  5. python 结合redis 队列 做一个例子

    结合redis 队列 做了一个例子 #!/usr/bin/env python # coding: utf-8 # @Time : 2018/12/21 0021 13:57 # @Site : # ...

  6. 什么是redis,redis能做什么,redis应用场景

    Redis是一个key-value存储系统.Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用.这篇文章小编为大家分享了在 ...

  7. Redis除了做缓存--Redis做消息队列/Redis做分布式锁/Redis做接口限流

    1.用Redis实现消息队列 用命令lpush入队,rpop出队 Long size = jedis.lpush("QueueName", message);//返回存放的数据条数 ...

  8. python之命令行可以做的事儿

    前言 说起python,大家都知道可以做很多有趣的事儿.知乎.CSDN上很多大牛做过很多或高大上或实用的事儿.参见这篇文章Python趣味代码整合之提升学生编程兴趣, 另外,我发现命令行也可以做很多事 ...

  9. Redis怎么做持久化

    1.redis持久化的两种方式 2.两种持久化方式区别 3.两种持久化方式的使用场景 1.Redis 是内存型数据库,一般来用作缓存.保存在内存的数据有一个特点, 就是断电消失,因此一旦 Redis ...

随机推荐

  1. app瘦身和包压缩技术有什么区别?

    APP瘦身 针对app文件中的文件进行优化,利用素材的拉伸,祛除不必要的文件,优化png, jpg素材,压缩音视频素材等方式实现app文件的减小. 包压缩技术 所谓包压缩,顾名思义就是将手游的安装包体 ...

  2. HTML5开源RPG游戏引擎lufylegendRPG 0.1发布

    一,小小开篇   首先不得不先介绍一下这个引擎: lufylegendRPG是lufylegend的拓展引擎,使用它时,需要引入lufylegend.同时您也需要了解lufylegend语法,这样才能 ...

  3. spring 启动过程

    首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境: 其次,在web.xm ...

  4. request.getInputStream() 流只能读取一次问题

    问题: 一次开发过程中同事在 sptring interceptor 中获取 request body 中值,以对数据的校验和预处理等操作 .导致之后spring 在读取request body 值做 ...

  5. kettle中的karaf设置

    Spoon.sh设置-Dpentaho.karaf.root.copy.dest.folder=$PENTAHO_KARAF_ROOT -Dpentaho.karaf.root.transient=f ...

  6. python 之操作redis数据库(非关系型数据库,k-v)

    数据库: 1. 关系型数据库 表结构 2. 非关系型数据库 nosql (k - v 速度快),常用的时以下三种: memcache 存在内存里 redis 存在内存里 mangodb 数据还是存在磁 ...

  7. 读取Android设备的MAC地址

    读取Android设备的MAC地址   AndroidUtil.java package com.csdn.android.util; import com.csdn.android.framewor ...

  8. VirtualBox AndroidX86 网络设置

    在Virtualbox中,把虚拟机网络设为“网络地址转换(NAT)”模式,高级中控制芯片(T)选择:PCnet-FAST III(Am79C973), 然后启动你的android-x86 4.0虚拟机 ...

  9. Android 环境搭建资料及启动过程中问题汇总

    一.环境搭建资料 推荐谷歌自己开发的Android Studio 工具可以从这个网址下载:http://tools.android-studio.org/,直接下载推荐的就行 二.安装 安装时最好指定 ...

  10. jq--ajax中止请求

    比如我后端设置延迟3s再响应给前端,我用的是node之koa2 router.get('/vueDemo/getStudents', async ( ctx ) => { //延迟3s asyn ...