zoukankan      html  css  js  c++  java
  • redis的使用方式

    常用的语法以及使用方式:
        
        key中不能包含回车空格等,key不要太长,占用内存。
        概念介绍:
            差集: a:{1,2,3} b:{2,3,4},以a为锚点,差集为1。
            交集:共有部分就是交集{2,3}
            并集:所有出现过的部分合并就是并集{1,2,3,4}
     

    string类型:redis最基础的类型,redis字符串是二进制安全的,这意味着他们有一个已知长度没有任何特殊字符终止,所以你可以存储任何东西,512M为上限。

    string在redis中的表现形式:
        struct sdf{
            long len;
            long free;
            char buf[];
        }

        添加键值:
            SET key value [EX seconds][PX milliseconds][NX|XX]
            设置键/值,重复设置会覆盖之前的。
            例:set name tom
     
        添加值和生存时间:
            SETEX key seconds value
            设置键aaa,值bbb,存活时间5s
            例:setex aaa 5 bbb
            注意:setex是原子性操作,设置值和设置有效时间会在同一时间完成。
     
         根据键获取值,不存在返回nil,得到的值不是字符串,将返回一个错误,get只能用于处理字符串
            GET key
            例:get aaa
     
         将value追加到原来的key的末尾:
            APPEND key value
            key不存在就会执行set操作
     
        同时设置一个或者多个key-value对,key存在会覆盖原值。
            MSET key value [key value ...]
        
        获取多个key-value
            MGET key [key...]
        
        覆写:在指定位置偏移复写value值,从offset开始
            STRANGE key offset value
            如:redis>set a "hello world"
                    OK
                   
                    redis>strange a 6 "Redis"
                    (integer) 11
        
                    redis>GET a
                    "hello Redis"
        获取键值长度:
            STRLEN key
     
        其他指令:
        GETSET    设置新值返回旧值。
        getset key value
        set a 1
        get a     //返回1
        getset a 2    // 返回1并将值改为2 
        get a     //返回2
     
        GETRANGE  得到字符串的子字符串存放在一个键(获取当前键对应的值在索引内的部分
        getrange key startindex endindex
        set a 123456
        getrange a 0 1    //返回1
        getrange a 1 3    //返回234
        
        GETBIT      对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
        getbit key offset
        SETBIT      对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
        setbit key offset value (offset的值必须>=0)
     
        SETNX      将 key 的值设为 value ,当且仅当 key 不存在。
        setnx key value
     
        MSETNX   同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
        msetnx key value [key value...]
     
        PSETEX    和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。(版本>=2.6.0)
        psetex key milliseconds value
        
        INCR          将 key 中储存的数字值增一。数字+1,非数字返回错误,key不存在,先将值初始化为0,在执行incr操作。
        incr key
        
        INCRBY     将 key 所储存的值加上指定增量。大体同上。
        incr key increment
     
        INCRBYFLOAT    为 key 中所储存的值加上指定浮点数增量,最多保留小数点后17位。(版本>=2.6.0)
        incrbyfloat key increment
     
        DECR        将 key 中储存的数字值减一。
        decr key
        
        DECRBY    将key中存储的数字减去固定值。
        decrby key decrement
        
    hash类型:
        redis中哈希值是字符串字段和字符串值之间的映射。
        相比string类型,hash类型提供了更多域的操作,因此在表现对象时,它是非常合适的数据类型。
        Redis中哈希值的存储容量也是非常大的,能存储超过400十亿键值对。
        
        添加键值:
        HSET key field value   
        hset what sb sb.com
        设置what键中sb域的值为sb.com,重新设置会覆盖之前的。
        
        设置多个键值:
        HMSET key field value [field value....]
     
        获取值:
        HGET key field
        hget what sb
        
        获取多个值:
        HMGET key field [field..]
        hmget what sb ss
        
        获取所有值:这里包含域和值。排列:域、值...
        HGETALL key 
        比如:
        hmset mykey aa aa.com bb bb.com
        hgetall mykey
        //aa            域
        //aa.com     值
        //bb
        //bb.com
        
        验证某个键下某个域是否存在,存在返回1,不存在返回0
        HEXISTS key field
        
        获取所有的域,存在返回一个列表,不存在返回一个空表
        HKEYS key 
        
        获取域的数量
        HLEN key
        
        删除某键中一个或者多个域
        HDEL key field [field...]
        
    list类型
     
    图解:
        ------------------------------
        头部                        尾部
     
        list类型是一个简单的字符串列表,按照插入顺序排序。
        可以在左边或者右边操作元素,左边为头部,右边为尾部。而且对于list两端的数据操作时间是固定的,即使数据是百万级的,但是如果list很大,对于中间某个数据的读取却很慢。
        一个列表最多包含2^32-1个元素(超过40亿个元素)。
        
        特点:有序、允许重复
     
        添加元素:(自己测试只能添加一个元素,可能是版本太低)
        LPUSH key value [value...]
        lpush friends zhangsan lisi wangwu
        从左到右依次插入表头,那么结果为:
        wangwu lisi zhangsan 
            
        将指定所谓位置的值设置为某值:
        LSET key index value
        
        删除第一个元素并返回:
        LPOP key
        
        LINDEX 获取指定索引的元素,0为第一个元素,负数则从后数,如-1是最后一个元素。
        LINDEX key index 
        比如:
        lpush mylist 1 2 3    //插入三个元素,3 2 1
        lindex mylist 0         //索引0的值为3
        lindex mylist -1        //索引-1的值为最后一个元素1
     
        插入元素,将值插入到某元素前/后,当目标值pivot不存在时,不进行任何操作,当key不存在,key被视为空列表,当key对应的值不是一个列表,则返回错误。
        LINSERT key BREFORE/AFTER pivot value
        
        在key对应的列表中删除count个与value相同的元素,当count为0时移除所有。count<0,移除count的绝对值个元素。
        LREM key count value
        比如列表: 1 2 3 1 1 1
        lrem 某key -3 1 代表删除某key对应的列表中前三个值为1的元素。
        lrem 某key 0 1 代表删除某key对应的列表中所有值为1的元素。
     
        获取列表的长度,key不存在返回0
        LLEN key
     
        指定范围删除其他所有元素,可以用负数,同上
        LTRIM key start stop
        ltrim mylist 0 2     //只保留列表中索引0-2号元素
        
    set类型
     
        set类型是一个有序的字符串集合,你可以快速的完成添加、删除以及测试元素是否存在。
        特点:无序
     
        添加多元素:
        SADD key value [value..]
     
        随机取出并删除元素,返回的元素即被删除的元素。
        SPOP key 
        
        取出全部元素,无元素返回空集合。
        SMEMBERS key
     
        比较差集,获取第一个key于其他几个key的差集。
        SDIFF key [key...]
        例子:
        SADD a 1 2 3 4
        SADD b 2 3 4
        SADD c 3 4 5
        结果:1
        这里要比较的就是 a - ((b + c)中a元素的部分)即a中的2 3 4在b或c元素中出现过了,未出现的只有1。
           
        获取交集
        SINTER key [key...]
        
        获取并集
        SUNION key [key...]
        
        判断某个元素在集合中是否存在,存在返回1,不存在返回0
        SISMEMBER key member
        例子:
        SADD aaa 111 222 333 444
        SISMEMBER aaa 222
        返回1
        SISMEMBER aaa 555
        返回0
            
        移动元素,将元素从A集合移动到B集合,从A集合中删除元素,在B集合中添加元素。
        SMOVE sourcekey destinationkey members
        SADD a 11 22 33
        SADD b 44 55
        SMOVE a b 22
        结果:
        a:{11,33}
        b:{22,44,55}
        
        移除多个元素
        SREM key member [member..]
     
     
    zset类型
        有序集合,与普通集合非常类似,不允许重复元素。不同于普通集合的是,有序集合包含一个评分属性,使用评分属性来控制集合的顺序,评分属性可以重复,但集合内数据不允许重复。使用有序集合可以非常快的对数据进行增删改。可以通过评分和次序获得一个范围的元素。可以快速存在性测试,快速访问集合中的某个元素。
     
        添加多个元素
        ZADD key score member [[score member] [score member]...]
        
        移除多个元素
        ZREM key member [member...]
     
        获得指定元素的评分
        ZSCORE key member
        
        获得指定位置的元素值(withscores属性展示score值),返回的数据递增显示
        ZRANGE key start stop [withscores]
     
        获取结合成员的数量
        ZCARD key
        
        获取指定评分内的集合成员数量,包含min、max的值
        ZCOUNT key min max
        
        获取元素在结合中的排名,即索引,从0开始
        ZRANK key member
        
        给集合内某元素的评分增加增量,比如本身评分2000,加500,评分变成2500
        ZINCREBY key increment member
        
     
    对于key的管理:

        模糊查询所有匹配的key
        KEYS pattern 
        keys *a*    查询所有key中包含字符a的key
     
        查询某个key是否存在,存在返回0,不存在返回1
        EXISTS key 
        
        将某个key从当前数据库转移到目标数据库中,redis中默认使用的是数据库0,切换数据库命令是select databasename(比如databasename = 1),这样就切换到数据库1中了。
        如果当前数据库没有这个key,则移动失败返回0。若目标数据库中已经存在当前key,则无移动效果。成功返回1,失败返回0。
        MOVE key db
        
        重名名某key,key不存在或者和新key相同返回错误,新key已存在将覆盖原值。
        RENAME key newKey
        
        排序SORT
        SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern...]] [ASC | DESC] [ALPHA] [STORE destination]
     
        设置生存时间,单位:秒
        EXPIRE key second
            
        获取某key的剩余生存时间,单位秒,返回-2证明没有这个key,返回-1代表key存在没有设置剩余时间。
        TTL key
     
        
        
     
     
     
     
     
     
     
     
     
     





  • 相关阅读:
    Wijmo 更优美的jQuery UI部件集:在对Wijmo GridView进行排序或者过滤时保留选择
    Wijmo 更优美的jQuery UI部件集:活动日历控件(Event Calendar)
    Wijmo 更优美的jQuery UI部件集:导出Wijmo的GridView到Excel
    Wijmo 更优美的jQuery UI部件集:服务器端Grid魔法
    Wijmo 更优美的jQuery UI部件集:在安全站点使用Wijmo控件
    Wijmo 更优美的jQuery UI部件集:复合图表(CompositeChart)
    Wijmo 更优美的jQuery UI部件集:C1 Wijmo Grids 更多惊喜
    Hello Metro:Windows 8下首个App
    Wijmo 更优美的jQuery UI部件集:运行时处理Wijmo GridView数据操作
    Wijmo 更优美的jQuery UI部件集:自定义 C1WijMenu
  • 原文地址:https://www.cnblogs.com/douJiangYouTiao888/p/6474054.html
Copyright © 2011-2022 走看看