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 ...
随机推荐
- spring常见注解说明
1. @ActiveProfiles("test") 我理解这个注解的主要用途是区分不同的环境.一般公司开发一个项目时,会区分测试环境.生产环境等.添加该注解,说明读取的profi ...
- php 计算gps坐标 距离
在计算机或GPS上经纬度经常用度.分.秒和度.度.分.分.秒.秒的混合方式进行表示,度.分.秒间的进 制是60进制,度.度.分.分. 秒.秒的进制是100进制,换算时一定要注意.可以近似地认为每个纬度 ...
- 详解MySQL第三篇—DCL语句
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包括 g ...
- mysql 锁相关的视图(未整理)
mysql 锁相关的视图 查看事务,以及事务对应的线程ID 如果发生堵塞.死锁等可以执行kill 线程ID 杀死线程 kill 199 SELECT * FROM informat ...
- Selenium-IDE,Selenium-RC ,Selenium grid以及 Selenium-Core
Selenium-IDE,Selenium-RC ,Selenium grid 以及 Selenium-Core Selenium 是一种 Web 应用的自动测试工具,通过模拟用户对 Web 页面的各 ...
- android 弹出带按钮的对话框
package com.example.helloworld; import android.os.Bundle;import android.app.Activity;import android. ...
- webService 总结
Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...
- Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) C Andryusha and Colored Balloons
地址:http://codeforces.com/contest/782/problem/C 题目: C. Andryusha and Colored Balloons time limit per ...
- Java Vertor详细介绍和使用示例
①对Vector有个整体认识 Vector是向量类,继承于AbstractList,实现了List,RandomAccess,Clonable这些接口. Vector继承于AbstractList,实 ...
- app安全研究
国内Android App在线漏洞检测平台 腾讯金刚审计系统 http://service.security.tencent.com/kingkong 免费 无限制 腾讯御安全 http://yaq ...