Redis可以做哪些事儿?
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可以做哪些事儿?的更多相关文章
- Redis能做什么?不能做什么?
https://blog.csdn.net/u014229282/article/details/81174202 最近阅读了<redis设计与实现>,这是一本比较枯燥的书,毕竟涉及到re ...
- redis可以做什么?
redis可以做什么? 1.缓存,毫无疑问这是Redis当今最为人熟知的使用场景.在提升服务器性能方面非常有效: 2.排行榜,如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的So ...
- Redis可以用来做什么?(摘自http://www.lianpenglin.cc廉鹏林博客)
Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」.Redis 以其超高的性能.完美的文档.简洁易懂的 ...
- Redis入门(二)-Redis能够做什么
引言 在上篇文章中,我们讲述了Redis的基本知识让读者对Redis有了基本的了解.那么这一节我们就来看一下Redis究竟能做什么. 上一节我们提到了Redis可用作数据库,高速缓存和消息队列代理.这 ...
- python 结合redis 队列 做一个例子
结合redis 队列 做了一个例子 #!/usr/bin/env python # coding: utf-8 # @Time : 2018/12/21 0021 13:57 # @Site : # ...
- 什么是redis,redis能做什么,redis应用场景
Redis是一个key-value存储系统.Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用.这篇文章小编为大家分享了在 ...
- Redis除了做缓存--Redis做消息队列/Redis做分布式锁/Redis做接口限流
1.用Redis实现消息队列 用命令lpush入队,rpop出队 Long size = jedis.lpush("QueueName", message);//返回存放的数据条数 ...
- python之命令行可以做的事儿
前言 说起python,大家都知道可以做很多有趣的事儿.知乎.CSDN上很多大牛做过很多或高大上或实用的事儿.参见这篇文章Python趣味代码整合之提升学生编程兴趣, 另外,我发现命令行也可以做很多事 ...
- Redis怎么做持久化
1.redis持久化的两种方式 2.两种持久化方式区别 3.两种持久化方式的使用场景 1.Redis 是内存型数据库,一般来用作缓存.保存在内存的数据有一个特点, 就是断电消失,因此一旦 Redis ...
随机推荐
- Python 调用 Shell脚本的方法
Python 调用 Shell脚本的方法 1.os模块的popen方法 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出. > ...
- how to use greendao in android studio
http://www.arjunsk.com/android/use-greendao-android-studio/ 1.新建一个java文件MainGenerator.java: import d ...
- 基于nodejs的websocket通信程序设计
网络程序设计无疑是nodejs + html最好用 一.nodejs的安装 1.在ubuntu上的安装 sudo apt install nodejs-legacy sudo apt install ...
- Linux PHP7的openssl扩展安装
Linux环境下使用PHPmailer发送邮件时,出现如下错误: SMTP -> ERROR: Failed to connect to server: Unable to find the s ...
- jenkins用户管理(Role-based Authorization Strategy插件使用)
安装:Role-based Authorization Strategy插件 一.点击左侧的"系统管理"-->再点击绿色的"管理插件" 二.点击&quo ...
- 20165324 《Java程序设计》第八周学习总结
学号 20165324 <Java程序设计>第八周学习总结 教材学习内容总结 第十二章 Java多线程机制 进程与线程 进程是程序的一次动态执行过程:线程是比进程更小的执行单位 线程的状态 ...
- HALCON里面的一维测量。
第一步:将图片导入, 拿到图片的名字 和窗口的句柄 第二步:创建一个测量区域.这个测量区域是一个矩形,假设他的名字叫A gen_measure_rectangle2 (TmpCtrl_Row,//输入 ...
- java容器的数据结构-ArrayList,LinkList,HashMap
ArrayList: 初始容量为10,底层实现是一个数组,Object[] elementData 自动扩容机制,当添加一个元素时,数组长度超过了elementData.leng,则会按照1.5倍进行 ...
- ansible playbook部署ELK集群系统
一.介绍 总共4台机器,分别为 192.168.1.99 192.168.1.100 192.168.1.210 192.168.1.211 服务所在机器为: redis:192.168.1.211 ...
- 由浅入深之Tensorflow(4)----Saver&restore
x = tf.placeholder(tf.float32) y = tf.placeholder(tf.float32) w = tf.Variable(tf.zeros([1, 1], dtype ...