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(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和

  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/wangjinya/p/10706758.html
Copyright © 2011-2022 走看看