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. 自定义HTTP头时的注意事项(转)

    原文:https://blog.gnuers.org/?p=462 HTTP头是可以包含英文字母([A-Za-z]).数字([0-9]).连接号(-)hyphens, 也可义是下划线(_).在使用ng ...

  2. django-网页视屏播放

    基本都基于第三方: -cc视频 -播放免费视频 -收费视频 -需要做认证,cc视频会给你发消息,你返回,携带数据 -在前端页面中添加响应的视屏框的代码 -功能实现,有相关接口文档,配置即可

  3. Linux(5)- MariaDB、mysql主从复制、初识redis

    一.MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL ...

  4. Oracle 学习笔记 12 -- 序列、索引、同义词

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/Topyuluo/article/details/24232449 数据库的对象包含:表.视图.序列. ...

  5. supervisor配置与应用

    1.简介 supervisor 是一款基于Python的进程管理工具,可以很方便的管理服务器上部署的应用程序.supervisor的功能如下: a. 启动.重启.关闭包括但不限于python进程. b ...

  6. SQL Server排名函数与排名开窗函数

    什么是排名函数?说实话我也不甚清楚,我知道 order by 是排序用的,那么什么又是排名函数呢? 接下来看几个示例就明白了. 首先建立一个表,随便插入一些数据. ROW_NUMBER 函数:直接排序 ...

  7. CCF 工资计算

    思路: 因为T<=10000,所以税前极限金额肯定不超过1000000(设个比较大的数字就行),然后逐一计算即可. #include<cstdio> int main() { int ...

  8. qqwry.dat输出乱码问题及maven打包后资源文件大小不一致的问题

    使用qqwry.dat进行IP地理位置查询时,遇到一个问题即在本地测试时查询纯真库时正常,没有任何问题,但是打包传到服务器上便出现了乱码问题. 1.首先排除服务器的字符集编码的影响 使用如下命令验证了 ...

  9. Git-基本操作(同SVN)

    本人拜读了廖雪峰老师关于Git的讲述后整理所得 1.创建版本库: 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删 ...

  10. 粗略介绍Java AQS的实现原理

    本文转自 http://www.importnew.com/24006.html 感谢作者 对我很有帮助 ①引言 AQS是JDK1.5提供的一个基于FIFO等待队列一个同步器的基础框架,java中的同 ...