redis实现简单队列_Redis

在工作中,时常会有用到队列的场景,比较常见的用rabbitMQ这些专业的组件,官网地址是:http://www.rabbitmq.com,重要的是官方有.net的客户端,但是如果对rabbitMQ不熟悉的话,建议使用第三方封装好的 EasyNetQ,rabbitMQ比较适合对安全性,稳定性要求较高的地方,但有时我们也会有对这方面要求不是很高的场景,比如:文章阅读数,实时性要求不是很高的地方,所以我想到了用redis来做队列。

redis 的List结构本身就是一个链表 (双向链表),所以符合我们的队列先进先出的要求。

我用的是StackExchange.Redis 这个组件来操作redis,以前一直用 Service.Stack.Redis,后来该类库升级后对个人使用有次数限制,需要付费使用才能没有调用限制.

操作redis简单封装如下:

public static class RedisHelper
 {
  public static int i = 0;
  private static string redisConnectionString = ConfigurationManager.AppSettings["RedisConnectionString"].ToString();

  private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
  {
   i++;
   return ConnectionMultiplexer.Connect(redisConnectionString);
  });

  public static ConnectionMultiplexer Instance
  {
   get
   {
    return lazyConnection.Value;
   }
  }
 }

有了这个操作类后,我们就可以操作redis了,简单的对 list 的操作如下:

/// <summary>
/// 简单 redis 队列
/// </summary>
public class SimpleRedisQueue
{
 public void LeftPush(string key, string value)
 {
  var redis = RedisHelper.Instance.GetDatabase();
  redis.ListLeftPush(key, value);
 }

 public string RightPop(string key)
 {
  var redis = RedisHelper.Instance.GetDatabase();
  return redis.ListRightPop(key);
 }
}

测试代码如下:

首先需要一个生产数据的程序

static void Main(string[] args)
  {
   System.Threading.Tasks.Task.Factory.StartNew(() =>
   {
    for (var i = 0; i < 99999999; i++)
    {
     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "a_" + i.ToString());
    }
   });

   System.Threading.Tasks.Task.Factory.StartNew(() =>
   {
    for (var i = 0; i < 99999999; i++)
    {
     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "b_" + i.ToString());
    }
   });
   System.Threading.Tasks.Task.Factory.StartNew(() =>
   {
    for (var i = 0; i < 9999; i++)
    {
     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "c_" + i.ToString());
    }
   });
   System.Threading.Tasks.Task.Factory.StartNew(() =>
   {
    for (var i = 0; i < 99999999; i++)
    {
     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "e_" + i.ToString());
    }
   });
   System.Threading.Tasks.Task.Factory.StartNew(() =>
   {
    for (var i = 0; i < 99999999; i++)
    {
     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "f_" + i.ToString());
    }
   });
   Console.ReadKey();
  }

然后有消费队列的程序:

static void Main(string[] args)
  {
   var queue = new SimpleRedisQueue();
   while (true)
   {
    var v = queue.RightPop("test1");
    Console.WriteLine(v == null ? "空" : v);
   }
  }

测试结果截图

对可靠性和稳定性要求不高的应用场景,可以使用redis简单方便的实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索队列
redis
redis队列实现秒杀、redis实现消息队列、redis 实现队列、php redis 实现队列、java redis 实现队列,以便于您获取更多的相关知识。

时间: 2024-09-20 00:29:30

redis实现简单队列_Redis的相关文章

Redis实现分布式队列浅析_Redis

Redis是什么? Redis是一个简单的,高效的,分布式的,基于内存的缓存工具. 假设好服务器后,通过网络连接(类似数据库),提供Key-Value式缓存服务. 简单,是Redis突出的特色. 简单可以保证核心功能的稳定和优异. redis的安装和配置 Linux系统下: apt-get install redis-server Windows下: 下载链接 下载安装msi文件就好了 配置主从同步 需要实现分布式队列,至少要有一个master(192.168.45.1)和一个slave(192

超强、超详细Redis数据库入门教程_Redis

[本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.redis数据结构 – strings 9.redis数据结构 – lists 10.redis数据结构 – 集合 11.redis数据结构 – 有序集合 12.redis数据结构 – 哈希 13.聊聊redis持久化 – 两种方式 14.聊聊redis持久化 – RDB 15.聊聊redis持

Redis客户端简单封装

Redis客户端简单封装并集成spring. spring-data-redis对redis有过度封装的嫌疑,而且也没有提供sharding模式,本文遂简单封装jedis. Xml代码 收藏代码 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http

Windows下Redis安装配置简单教程_Redis

本文为大家分享了Redis安装教程,供大家参考,具体内容如下 1.安装Redis 通过以上路径下载后解压到具体文件夹,解压后的文件如下: 通过cmd切换到解压的文件夹目录,然后键入如下命令:redis-server --service-install redis.windows.conf既可以安装成功,在服务这里可以看到叫Redis的服务. 2.修改密码 在解压后的文件夹下面找到redis.windows.conf,使用文件编辑器进入编辑.找到requirepass,右边的foobared即是对

Redis总结笔记(二):C#连接Redis简单例子_Redis

注:C#在调用Redis是不要使用ServiceStack.Redis驱动的4.0版本,因为这个版本已经商业化了,会出现每小时6000条数据的限制 1.引用驱动 复制代码 代码如下:     using ServiceStack.Redis; 2.数据库连接 复制代码 代码如下:     RedisClient client;             //连接服务器   6379是redis的默认端口             client = new RedisClient("127.0.0.1

从MySQL到Redis的简单数据库迁移方法_Redis

 从mysql搬一个大表到redis中,你会发现在提取.转换或是载入一行数据时,速度慢的让你难以忍受.这里我就要告诉一个让你解脱的小技巧.使用"管道输出"的方式把mysql命令行产生的内容直接传递给redis-cli,以绕过"中间件"的方式使两者在进行数据操作时达到最佳速度. 一个约八百万行数据的mysql表,原本导入到redis中需要90分钟,使用这个方法后,只需要两分钟.不管你信不信,反正我是信了. Mysql到Redis的数据协议 redis-cli命令行工具

在CenOS系统下安装和配置Redis数据库的教程_Redis

一:安装redis wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz tar zxvf redis-2.6.14.tar.gz cd redis-2.6.14 make PREFIX=/usr/local/redis install 二:配置redis 使用默认配置文件,稍作修改就可以了 1.习惯做法,配置文件放在源码安装的文件夹下,便于管理吧 mkdir /usr/local/redis/etc/ cp redis-2.6.1

Redis配置文件详解_Redis

如果认为Redis是一个key value存储, 可以使用它来代替MySQL:如果认为它是一个可以持久化的cache, 可能只是用它保存一些频繁访问的临时数据(代替Memcached):除此之外,还可以把Redis当做一个轻量级的消息队列使用,因为它内置就支持 list数据结构和PUB/SUB命令:还可以当做一个轻量级的分布式锁系统.Redis是REmote DIctionary Server的缩写,在Redis在官方网站的解释是: 复制代码 代码如下: Redis is an open sou

Linux下安装Redis并设置相关服务_Redis

一.简介 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器. Redis 优势          异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录.          支持丰富的数据类型:Redi