zoukankan      html  css  js  c++  java
  • redis的 key string hash list set sorted set 常用的方法

    redis 安装文件: 


    http://blog.csdn.net/tangsilai/article/details/7477961


    ==============================     String  =======================================

    一. 字符串:  name , age 均为key
        
        设置值: set name boa   >> ok
        
        获取值: get name       >> "boa"
        
        删除key: del name
        
        查看key存储数据的类型: type name  >> string
        
        拼接串: append name isGood    >> get name >>"boaisGood"    
       
        set age 1
        key的值自增1: incr age  
        key的值自减1: cecr age
        
        多个查询 mget name age >>
            1) "boa111"
            2) "25"
        
        
        返回 key 所储存的字符串值的长度: strlen name >>        
            (integer) 6
        
        

        
        
     ========================      Hash     ====================================
     
     二. 哈希表: hashkey 为key也叫作表名.  表内容: name "boa" age 25 description "is a good man"   // 分 h- / hm-
        单个保存: hset hashkey1 name "boa" >>  //hset 不支持批量设置
                  hset hashkey1 age 25     >>
                  hset hashkey1 description "is a good man" >>
              
        批量保存: hmset hashkey name "boa" age 25 description "is a good man"
        
        查询单个值: hget hashkey name  >> //hget不支持查询多个值
             "boa"    
             
        查询单个值: hmget hashkey name >>   
            1) "boa"
            
        查询多个值: hmget hashkey name age >>
            1) "boa"
            2) "25"
        
        获取所有key和value: hgetall hashkey >>   //key value 
            1) "name"
            2) "boa"
            3) "age"
            4) "25"
            5) "description"
            6) "is a good man"
        
        获取所有key:> hkeys hashkey >>
            1) "name"
            2) "age"
            3) "description"
        
        获取所有value:>hvals hashkey >>
            1) "boa"
            2) "25"
            3) "is a good man"
        获取表中字段的数量: hlen hashkey >>
            (integer) 3
        
        @@@@ 使用场景:  对象存储.
        
    ==========================       List      ==============================================

    三 . 列表:  listkey   //分左右操作

        左插入(从头部插入):  head    mycat-->mysql-->mongo-->redis(first)    tail
              lpush listkey redis
              lpush listkey mongo
              lpush listkey mysql
              lpush listkey mycat
              
        右插入(从尾部插入) :    head  (first)redis<--mongo<--mysql<--mycat  tail
              rpush listkey2 redis
              rpush listkey2 mongo
              rpush listkey2 mysql
              rpush listkey2 mycat
        
        根据索引(序号)查询列表中的元素: lindex listkey 1  >>      //索引从0开始,到length-1为止.          
              "mongo"
         
        查询指定范围内的元素: lrange listkey 0 2  >>  // lrange key start_index stop_index (该范围也是索引的范围)
            1) "mycat"
            2) "mysql"
            3) "mongo"
        
        
        
        获取列表长度: llen listkey >>
               (integer) 4
        
        
        移除并获取列表的第一个元素: lpop listkey  >>
            "mycat"
            
        移除并获取列表的第一个元素: lpop listkey2  >>
            "redis"
        
        移除并获取列表的最后一个元素: rpop listkey  >>
            "redis"
            
        移除并获取列表的最后一个元素: rpop listkey2  >>
            "mycat"
        
        
       
        移除列表元素  lrem listkey2 1 hello     >>  // listkey2 目标集合,  1: 表示数量, 正负表示方向   hello 表示要删除匹配的对象.
        Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
            COUNT 的值可以是以下几种:
            count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
            count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
            count = 0 : 移除表中所有与 VALUE 相等的值。
        
        
        移除并获取第一个:    blpop listkey 10   //一直等待,直到超时或者发现可弹出的元素为止  10 : 等待时间.
        移除并获取最后一个:  brpop listkey timeout   //~
        
        尾部移除一个元素,将这个元素从头部插入: rpoplpush listkey listkey 
        
        
       @@@@ 使用场景: 消息队列, 发送缓存队列, 支持反向查找和遍历,
       
         假设现在有 job 、 command 和 request 三个列表,其中 job 不存在, command 和 request 都持有非空列表。考虑以下命令:  
      BLPOP job command request 30  #阻塞30秒,0的话就是无限期阻塞,job列表为空,被跳过,紧接着command 列表的第一个元素被弹出。  
      1) "command"                             # 弹出元素所属的列表  
      2) "update system..."                    # 弹出元素所属的值   
      为什么要阻塞版本的pop呢,主要是为了避免轮询。
      举个简单的例子如果我们用list来实现一个工作队列。
      执行任务的thread可以调用阻塞版本的pop去获取任务这样就可以避免轮询去检查是否有任务存在。
      当任务来时候工作线程可以立即返回,也可以避免轮询带来的延迟。  
        
    ===============================      Set     =============================================
    四. 集合 : setkey , setkey2 均为set名.

       添加元素:sadd setkey "hello" >>  (integer) 1
                sadd setkey "world" >>  (integer) 1
                sadd setkey "fuck"  >>  (integer) 1
                sadd setkey "hello" >>  (integer) 0  
                sadd setkey is very good city  //批量添加元素

       批量添加元素:  sadd setkey2 boa is good city fuck  
       
       查询集合的所有元素: smembers setkey   >>
                1) "fuck"
                2) "work"
                3) "hello"   
       
        获取集合的成员个数: scard setkey  >>
                (integer) 3
        
        移除集合中的一个或者多个成员: srem  fuck work  >>
        
        返回给定所有集合的交集:  sinter setkey setkey2 >>
                1) "city"
                2) "fuck"
                3) "good"
                4) "is"
        
        返回给定所有集合的并集:  sunion setkey setkey2  >>
                1) "boa"
                2) "world"
                3) "fuck"
                4) "good"
                5) "is"
                6) "city"
                7) "very"
                8) "hello"
        
        返回给定所有集合的差集:  sdiff setkey setkey2 //setkey中有setkey2中没有的集合. >> 
                1) "world"
                2) "very"
                3) "hello"
                
        将 world 元素从 setkey 集合移动到 seteky2 集合: smove setkey seteky2 world >>
                (integer) 1
                
                
                
                
                
        
       @@@@应用场景:  需要自动排重的场景, 随机排列数据 . 可以求交集,并集,差集.
        
        
    ====================================   sorted Set    ===================================

    五. 有序集合:  ssetkey, ssetkey2, ssetkey3

    添加元素: zadd ssetkey 1 yyf 
              zadd ssetkey 2 czq
              zadd ssetkey 3 cyf
              zadd ssetkey 5 lxy
              zadd ssetkey 6 lmz
              zadd ssetkey 6 yhz 
              
    批量添加(要带分数): zadd ssetkey2 1 yyf 2 czq 3 cyf 4 lxy 5 yhz 6 lmz 5 xxx

    查看所有元素: zrange ssetkey 0 -1
                1) "yyf"
                2) "czq"
                3) "cyf"
                4) "lxy"  
                5) "lmz"
                6) "yhz"
                --------------------------------
                zrange ssetkey2 0 -1
                1) "yyf"
                2) "czq"
                3) "cyf"
                4) "lxy"
                5) "xxx"    
                6) "yhz"
                7) "lmz"



    删除元素:  zrem ssetkey2 boa

    删除多个元素:   zrem ssetkey2 yyf czq
        (integer) 2
        
    查看元素个数: zcard ssetkey2
        (integer) 7         

    查看指定元素的分数: zscore ssetkey czq >>
       "2"
        





    附件列表

    • 相关阅读:
      跨域资源共享 CORS 详解
      C# 每月第一天和最后一天
      jexus http to https
      ASP.NET MVC 路由学习
      jexus
      centos7 添加开机启动项
      jexus docker
      HTTP2.0新特性
      jexus配置支持Owin
      Autofac Named命名和Key Service服务
    • 原文地址:https://www.cnblogs.com/duenboa/p/6665406.html
    Copyright © 2011-2022 走看看