Redis (二) 常用类型及相关命令

关于Redis类型的自我学习和总结~

字符串类型


  • set key value [ex 秒] [px 毫秒] [nx] | [xx]
    如:set a 1 ex 10,  10秒有效
        set a 1 px 9000, 9秒有效
    注: ex/px 不要同时使用,否则以后面的有效期为准
    nx: 表示key不存在时,执行操作
    xx: 表示key存在时,执行操作
  • mset (multi set) 一次性设置多个键值
    mset key1 v1 key2 v2 ...
  • 获取key的
    get key    
  • 获取多个key的值
    mget key1 key1 ...keyn 
  • 把字符串的offset偏移字节,改成value
    setrange key offset value
    
    例:
        set great hello
        setrange great 2 x
        get great   得到 hexlo
        
    注意:
        如果偏移量大于字符长度,该字符自动补0x00(\x00)
        hello\x00\x00!!!!
  • 把value追加到key的原值上
    append key value
  • 获取字符串中[start,stop]范围的值,包括start和stop
    getrange key start stop
    
    备注:
        对于字符串的下标:左数从0开始,右数从-1开始
    注意:
        1.start >= length 返回 “”
        2.stop >= length 截取字符串结尾
        3.如果start所处位置在stop右边,返回空字符串
  • 获取旧值并设置新值
    getset key newvalue
  • 自增和自减
    incr key                自增 + 1
    decr key                递减 - 1
    incrby key number       增加多少
    decrby key number       减少多少
    incrbyfloat key floatnumber 增加浮点数
  • 设置offset对应二进制位上的值
    setbit key offset value
    返回:该位上的旧值
    注意:
        1.如果offset过大,则回你在中间填充0
        2.offset 最大2^32-1可推出最大的字符串为512M
  • 对key1,key2,keyN作operation,并将结果保存到destkey上
    bitop operation destkey key1 [key2...]
    
    备注:operation可以是:
        AND、OR、NOT、XOR
    注意:对于NOT操作,key不能多个
    
    例:
        setbit lower 7 0
        setbit lower 2 1
        set char Q
        bitop or char char lower
        get char  变为了小写

list类型


  • 向列表中添加数据
    lpush key value : 向左添加
    rpush key value : 向右添加
  • 返回链表中[start,stop]中的元素
    lrange key start stop 
    
    规律:左数从0开始,右数从-1开始
  • 返回并删除链表元素
    lpop key : 返回并删除头部元素
    rpop key : 返回并删除尾部元素
  • 从key链表中删除value值
    lrem key count value
    
    注:
        1.删除count的绝对值个value后即诶书
        2.count>0 从表头删除
        3.count<0 从表尾结束
  • 剪切key对应的连接,切[start,stop]一段,并把该段重新赋给key
    ltrim key start stop
    
    注:包含start,stop
  • 返回index索引上的值
    lindex key index 
  • 计算链接表的元素个数
    llen key
  • 在key链表中寻中‘search’,并在search值之前|之后插入value
    linsert key after|before search value
    
    注:一旦找到一呃search后,命令就结束了,因此不会插入多个value
  • 把source的尾部拿出来放在dest的头部,并返回该元素值
    rpoplpush source destt
    
    场景:
        task + bak 双链表完成安全队列,进行任务的分发
        
    业务逻辑:
        1.rpoplpush task bak
        2.接收返回值,并做业务处理
        3.如果成功,rpop bak清除任务,如果不成功,下次从bak表里取任务
  • 等待弹出key的尾/头元素
    brpop | blpop  key timeout
    
    备注:
        timeout为等待时间
        如果timeout为0 ,则一直等待
        
    场景:长轮询ajax,在线聊天时,能够用到

set集合结构及命令

  • set集合的特点:
1. 无序性
2. 唯一性
3. 确定性

注意:
    在string和link(list)的命令中,可以通过range来访问string中的某几个字符
    或某几个元素,但是,因为集合的无序性,无法通过下表或者范围来访问部分
    元素。因此,想要查看元素,要么随机选一个,要么全选
  • 在集合中增加元素
    sadd key value [value ...]
  • 查看集合元素
    smembers key
  • 删除集合中的元素
    srem key value value1 value2 ...
    返回值:删掉的个数,忽略不存在的元素
  • 返回并删除集合中的随机一个元素
    spop key
  • 随机获得集合中的一个元素
    srandmember key
  • 判断某个元素是否在key集合中
    sismember key value
    
    返回: 1/0
  • 返回集合中元素的个数
    scard key
  • 把source中的value删除,并添加到dest集合中
    smove source dest value
  • 求出key1,key2,key3三个集合中的交集,并返回
    sinter key1 key2 key3
  • 求出交集并保存到result集合中
    sinterstore result key1 key2 key3
  • 求出key1 key2 key3三个集合的并集,并返回
    sunion key1 key2 key3
  • 求多个集合的差集
    sdiff key1 key2 key3 
    key1与key2 key3的差集(减去他们公共的部分,key1集合中剩下的元素)

有序集合的结构及命令


  • 添加元素
    zadd key score value1 score value2
    
    说明:
        有序集合会根据score来进行排序
  • 查询集合中member的排名(升序 0 开始)
    zrank key member
  • 查询member的排名(降序 0 开始)
    zrevrank key memeber
  • 查询集合中,[start,stop]的元素,默认是升序排列
    zrange key start stop [withscores] 从start 到 stop之间的
    
    备注:withscores是把score打印出来
  • 把集合降序排列,取名字[start,stop]之间的元素
    zrevrange key start stop
  • 取score在[min,max]内的元素
    zrangebyscore key min max [withscores] limit offset N
    
    说明:跳过offset个,取N个
  • 返回元素的个数
    zcard key
  • 返回[min,max]区间内元素的数量
    zcount key min max
  • 根据score来删除元素,删除score在[min,max]之间的
    zremrangebyscore key min max
  • 根据排名删除元素,删除名次在[start,end]之间的
    zremrangebyrank key start end
  • 指定名字删除元素
    zrem key value
  • 求集合的交集等操作
        zinterstore destination numkeys key1 [key2 ...] 
    [weights weight [weight ...}] [aggregate sum | min | max]
    
    说明:
        1.聚合方法用:sum | min | max
        2.聚合的结果:保存在destination中
    问:
        如果有交集,交集元素又有score,那么,score怎么处理?
    答:
        aggregate sum : score 想加
        aggregate min : score 求最小
        aggregate max : score 求最大
    
    另:
        可以通过weight设置不同key的权重,交集时,score * weights
  • 求集合的并集等操作
    用法同上 ⬆️
    zunionstore

hash结构及命令


  • 结构
    相当于一个关联数组
    field => value
    name     yang
    age      18
    height   180
  • 把key中field域的值设为value
    hset key field value
    
    注:
        如果没有field域,直接添加,
        如果有,则覆盖原field上的值
  • 设置多个field->value值到key中

    hmset key field1 value1 [field2 value2 ...]
    
    备注:
        对应php理解为:
        $key = array(field1 => value1,field2 => valuew ...fieldN => valueN)
  • 返回key中的field域对应的值
    hget key field
  • 查询多个key中field对应的值
    hmget key field1 field2...fieldN
  • 返回key中所有field 和 value
    hgetall key
  • 删除key中的field
    hdel key field
  • 返回key中元素的数量
    hlen key
  • 判断key中有没有field域
    hexists key field
  • 把key中的field域的值增长整数型value
    hinrby key field value   
  • 把key中的field域的值增长浮点值value
    hinrby float key field value  
  • 返回key中所有的field
    hkeys key
  • 返回key中所有value
    hvals key

本文为作者原创,允许转载,由骚杨在 luckyy.vip发布,并在掘金同步。转载请说明文章出处。

4+
Avatar

作者: 骚杨

发表评论

电子邮件地址不会被公开。 必填项已用*标注

本站总访问量:26,081 次