zoukankan      html  css  js  c++  java
  • Redis分布式队列

    一、Redis介绍:

    1. Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。Redis纯粹为应用而产生,它是一个高性能的key-value数据库,并且提供了多种语言的API
    2. 性能测试结果表示SET操作每秒钟可达110000次,GET操作每秒81000次(当然不同的服务器配置性能不同)。
    3. redis目前提供五种数据类型:string(字符串),list(链表), Hash(哈希),set(集合)及zset(sorted set) (有序集合)

    4. Redis的存储分为内存存储、磁盘存储 .从这一点,也说明了Redis与Memcached是有区别的。Redis 与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改 操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    二、 Redis的使用

    1. 下载地址:下载地址Redis:https://github.com/dmajkic/redis/downloads 

    2. 将服务程序拷贝到一个磁盘上的目录

    3. 相关目录介绍:

    redis-server.exe:服务程序 
    redis-check-dump.exe:本地数据库检查
     redis-check-aof.exe:更新日志检查
    redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询.
    redis-cli.exe: 服务端开启后,我们的客户端就可以输入各种命令测试了

    4. 启动redis服务端:打开一个cmd窗口,使用cd命令切换到指定目录(F:Redis)运行 redis-server.exe redis.conf 

    5. 启动Redis客户端:

    重新打开一个cmd窗口,使用cd命令切换到指定目录(F:Redis)运行 redis-cli.exe -h 127.0.0.1 -p 6379,其中 127.0.0.1是本地ip,6379是redis服务端的默认端口 (这样可以开启一个客户端程序进行特殊指令的测试).

    可以将此服务设置为windows系统服务,下载Redis服务安装软件,安装即可。(https://github.com/rgl/redis/downloads )
    接下来在使用Redis时,还需要下载C#驱动。

    三、 Redis常用数据类型介绍:

    1. 使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。

     2. Redis最为常用的数据类型主要有以下五种: 

    • String
    • Hash
    • List
    • Set  :无序集合
    • Sorted set   :有序集合

    3. string介绍:

    String是最常用的一种数据类型,普通的key/value存储都可以归为此类 。一个Key对应一个Value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片(生成二进制)或者序列化的对象。基本操作如下:

    //将泛型的int类型存进Redis
     var client = new RedisClient("127.0.0.1", 6379);
                 client.Set<int>("pwd", 1111);
                int pwd=client.Get<int>("pwd");
                Console.WriteLine(pwd);
    
    //将类对象存进Redis,但是在Memcached中需要进行序列化,Redis中不需要
    UserInfo userInfo = new UserInfo() { UserName = "zhangsan", UserPwd = "1111" };(底层使用json序列化 )
    
    client.Set<UserInfo>("userInfo", userInfo);
    UserInfo user=client.Get<UserInfo>("userInfo");
    Console.WriteLine(user.UserName);
    
    //将list集合存进Redis中
                List<UserInfo> list = new List<UserInfo>() { new UserInfo(){UserName="lisi",UserPwd="111"},new UserInfo(){UserName="wangwu",UserPwd="123"} };
                client.Set<List<UserInfo>>("list",list);
                List<UserInfo>userInfoList=client.Get<List<UserInfo>>("list");
                foreach (UserInfo userInfo in userInfoList)
                {
                    Console.WriteLine(userInfo.UserName);
                }

    4.  Hash

    • hash是一个string 类型的field和value的映射表。hash特别适合存储对象。相对于将对象的每个字段存成单个string 类型。一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
    • 作为一个key value存在,很多开发者自然的使用set/get方式来使用Redis,实际上这并不是最优化的使用方法。尤其在未启用VM情况下,Redis全部数据需要放入内存,节约内存尤其重要.
    • Hash对应的Value内部实际就是一个HashMap,实际这里会有2种不同实现,这个HashMap的成员比较少时,Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,当成员量增大时会自动转成真正的HashMap.
    • Key仍然是用户ID, value是一个Map,这个Map的key是成员的属性名,value是属性值,这样对数据的修改和存取都可以直接通过其内部Map的Key(Redis里称内部Map的key为field), 也就是通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和

  • 相关阅读:
    Hibernate 项目查询数据报 UnknownEntityTypeException
    C# 实现保留两位小数的方法
    在vs中安装和引用科学计算库 Math.NET Numerics
    C# 特性(Attribute)
    Modbus测试工具ModbusPoll与Modbus Slave使用方法
    StarUML3.0学习笔记
    转载:接近开关NPN型与PNP型的相互代替
    C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
    DateTime.ToString() Patterns
    _056_根据年份判断十二生肖
  • 原文地址:https://www.cnblogs.com/wangjinya/p/10706758.html
Copyright © 2011-2022 走看看