• “两学一做”在山西——黄河新闻网 2019-07-13
  • 内地生报读香港高校本科人数持续下跌 2019-07-13
  • 【学习时刻】人民大学王义桅:金砖合作的“自信”与“自觉” 2019-07-12
  • 女子请“私家侦探”被骗3万 警方循线捣毁诈骗团伙 2019-07-11
  • 【学习时刻】北交大马院院长韩振峰:高校思想政治工作必须牢牢把握三大根本问题 2019-07-11
  • 全国“非遗”保护工作先进名单公布 2019-07-01
  • 紫光阁中共中央国家机关工作委员会 2019-06-25
  • 杭州控烟令修改草案拟允许室内设吸烟区,控烟专家:跌破眼镜 2019-06-25
  • 挪用近30万报纸征订款赌博 河南一报社聘用制干部获刑 2019-06-23
  • 2016年,有1145家上市公司大小非减持了3600亿元,还有210名上市公司高管减持了1400亿元。IPO已成了造就成千上万个十亿、百亿富豪的捷径, 2019-06-21
  • 专家“把脉”中国电影市场:提升品质方能逆袭 2019-06-21
  • “善款资助副局长儿子留学”真相须尽快落地 2019-06-19
  • 21岁女护士失联2天后确认遇害 嫌疑人为其前男友 2019-06-19
  • 中国地质公园名录旅行地中国国家地理网 2019-06-13
  • 玄关运用有四大原则 用的好才能财旺挡煞聚财 ——凤凰网房产 2019-06-10
  • redis 系列10 字符串对象

    广东十一选5一定牛 www.aavbg.com 一. 字符串对象编码

      Redis中字符串可以存储3种类型,分别是字节串(byte string)、整数、浮点数。在上章节中讲到字符串对象的编码可以是int, raw,embstr。 如果一个字符串对象保存的是整数值,那么对象RedisObject结构的ptr 属性里面将void*转换成long,字符串对象的编码设置为int。

      例1: 使用set命令,创建一个int编码的字符串对象。

        127.0.0.1:6379> set num1 10086
        OK
        127.0.0.1:6379> object encoding num1
        "int"

      RedisObject结构中ptr指向一个long值,参考图如下所示:

      例2: 使用set命令,创建一个raw编码的字符串对象。这个字符串值的长度大于32字节。

        127.0.0.1:6379> set story3 "long long long long long long long long long ..."
        OK
        127.0.0.1:6379> strlen story3
        (integer) 48
        127.0.0.1:6379> object encoding story3
        "raw"

        RedisObject结构中ptr指向SDS的sdshdr结构, 参考图如下所示:

      例3: 使用set命令,创建一个embstr编码的字符串对象, 这个字符串值的长度小于等于32字节。

        127.0.0.1:6379> set story4 "long long long long long lon"
        OK
        127.0.0.1:6379> strlen story4
        (integer) 28
        127.0.0.1:6379> object encoding story4
        "embstr"

        embstr编码是专门用于保存短字符串的一种优化编码方式,这种编码和raw编码一样,都使用RedisObject结构和sdshdr结构来表示字符串对象。使用embstr编码的字符串对象来保存短字符串值有以下好处: 

    (1) embstr编码将创建字符串对象所需的内存分配次数从raw编码的两次降低为一次。

    (2) 释放embstr编码的字符串对象只需要调用一次内存释放函数。而raw编码的为二次。

    (3) embstr编码的字符串对象的所有数据都保存在一块连续的内存中,能更好的带来缓存优势。

      例4: 使用set命令,创建一个浮点数,也是作为字符串保存,属于embstr编码的字符串对象。

        127.0.0.1:6379> set pi 3.14
        OK
        127.0.0.1:6379> object encoding pi
        "embstr"

        最后:总结字符串对象保存各类型值的编码方式

    字符串对象值 编码
    可以用long类型保存的整数 int
    可以用long double类型保存的浮点数 Embstr或者raw
    值长度太长而没办法用long类型表示的整数,或者浮点数。 Embstr或者raw
    值的长度大于32字节 raw
    长度小于32字节 Embstr

    二. key命令  

     -- del命令 删除存在的key, 如果没有存在的key返回0。
            127.0.0.1:6379> del msg
            (integer) 1
    -- dump命令 序列化给定 key, 如果 key 不存在, 那么返回 nil,否则返回序列化之后的值。 127.0.0.1:6379> dump msg "\x00\x05hello\b\x00\xda_3\xc9\xcc-\xaa2"
    -- EXISTS命令 用于检查给定 key 是否存在, 若 key 存在返回 1 ,否则返回 0 。 127.0.0.1:6379> exists msg (integer) 1
    -- Expire 命令用于设置 key 的过期时间。key 过期后将不再可用。设置成功返回1。下面设置了过期时间为 1 分钟,1分钟后该键会自动删除。 127.0.0.1:6379> expire msg 60 (integer) 1
    -- pattern 命令用于查找所有符合给定模式,返回符合给定模式的 key 列表 (Array)。 127.0.0.1:6379> set msg1 1 OK 127.0.0.1:6379> set msg2 2 OK 127.0.0.1:6379> set msg3 3 OK 127.0.0.1:6379> keys msg* 1) "msg2" 2) "msg1" 3) "msg3"
    -- PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。 -- Pttl 命令以毫秒为单位返回 key 的剩余过期时间。 -- ttl 命令以秒为单位返回 key 的剩余过期时间。 127.0.0.1:6379> expire msg1 60 (integer) 1 127.0.0.1:6379> ttl msg1 (integer) 49 127.0.0.1:6379> persist msg1 (integer) 1 127.0.0.1:6379> ttl msg1 (integer) -1
    -- RANDOMKEY 命令从当前数据库中随机返回一个 key 127.0.0.1:6379> RANDOMKEY "fruit-price"
    -- Rename 命令用于修改 key 的名称 127.0.0.1:6379> rename msg1 msg1new OK
    -- Renamenx 命令修改 key名称,新的key没有存已有数据库中时,修改成功.返回1. 127.0.0.1:6379> get msg2 "2" 127.0.0.1:6379> get msg3 "3" 127.0.0.1:6379> renamenx msg2 msg3 (integer) 0 127.0.0.1:6379> renamenx msg2 msg4 (integer) 1 

    其它:
      MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。
      -- type 命令用于返回 key 所储存的值的类型
      none (key不存在),string (字符串),list (列表),set (集合),zset (有序集),hash (哈希表)

     

    三.字符串对象命令

     --  set命令指定 key 的值
     --  get 命令获取指定 key 的值
     --  GETRANGE返回 key 中字符串值的子字符
        127.0.0.1:6379> set msg "hello"
        OK
        127.0.0.1:6379> getrange msg 0 2
        "hel"
    
     --  getset 命令将给定 key 的值重新设置 value ,并返回 key 的旧值(old value)
        127.0.0.1:6379> getset msg "hi"
        "hello"
        127.0.0.1:6379> get msg
        "hi"
    
     --  MGET 命令获取所有(一个或多个)给定 key 的值
        127.0.0.1:6379> mget msg msg3
        1) "hi"
        2) "3"
    
     -- setex 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)
        127.0.0.1:6379> setex message 10 "hello"
        OK
        127.0.0.1:6379> get message
        "hello"
        127.0.0.1:6379> get message
        (nil)   10秒后
    
     -- setnx命令 只有在 key 不存在时设置 key 的值, 下面msg键存在,设置失败返回0,msg1键不存在,设置成功,返回1
        127.0.0.1:6379> setnx msg "hello"
        (integer) 0
        127.0.0.1:6379> setnx msg1 "hello"
        (integer) 1
    
    -- setrange 命令用value参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
        127.0.0.1:6379> set msg "hello"
        OK
        127.0.0.1:6379> setrange msg 1 "i..."
        (integer) 5
        127.0.0.1:6379> get msg
        "hi..."
    
    -- strlen 命令返回 key 所储存的字符串值的长度。
        127.0.0.1:6379> strlen msg
        (integer) 5
    
    -- mset 命令同时设置一个或多个 key-value 对。
        127.0.0.1:6379> mset msg "hi" msg2 "hi"
        OK
        127.0.0.1:6379> mget msg msg2
        1) "hi"
        2) "hi"
    
    -- msetnx命令同时设置一个或多个 key-value 对,所有给定 key 都必须不存在, 只要存在一个已有的key,所有添加失败。
        127.0.0.1:6379> msetnx msg6 "hello" msg5 "hello"
        (integer) 1
        127.0.0.1:6379> mget msg6 msg5
        1) "hello"
        2) "hello"
    
    -- psetex命令 它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
        127.0.0.1:6379> psetex msg5 5000 "hi"
        OK
        127.0.0.1:6379> get msg5
        "hi"
        127.0.0.1:6379> get msg5
        (nil)  5秒后
    
    --  Incr 命令将 key 中储存的数字值增一。
        127.0.0.1:6379> set num  1
        OK
        127.0.0.1:6379> incr num
        (integer) 2
        127.0.0.1:6379> get num
        "2"
    
    -- Incrby 命令将 key 中储存的数字加上指定的增量值。在值为2是加10。
        127.0.0.1:6379> incrby num 10
        (integer) 12
        127.0.0.1:6379> get num
        "12"
        
    -- Decrby 命令将 key 所储存的值减去指定的减量值。将值为12 减去10。
        127.0.0.1:6379> decrby num 10
        (integer) 2
        127.0.0.1:6379> get num
        "2"
    
     --  Append 命令用于为指定的 key 追加值。
        127.0.0.1:6379> set msg "hello"
        OK
        127.0.0.1:6379> append msg "world"
        (integer) 10
        127.0.0.1:6379> get msg
        "helloworld"

     

    posted on 2018-11-14 17:56 花阴偷移 阅读(...) 评论(...) 编辑 收藏

  • “两学一做”在山西——黄河新闻网 2019-07-13
  • 内地生报读香港高校本科人数持续下跌 2019-07-13
  • 【学习时刻】人民大学王义桅:金砖合作的“自信”与“自觉” 2019-07-12
  • 女子请“私家侦探”被骗3万 警方循线捣毁诈骗团伙 2019-07-11
  • 【学习时刻】北交大马院院长韩振峰:高校思想政治工作必须牢牢把握三大根本问题 2019-07-11
  • 全国“非遗”保护工作先进名单公布 2019-07-01
  • 紫光阁中共中央国家机关工作委员会 2019-06-25
  • 杭州控烟令修改草案拟允许室内设吸烟区,控烟专家:跌破眼镜 2019-06-25
  • 挪用近30万报纸征订款赌博 河南一报社聘用制干部获刑 2019-06-23
  • 2016年,有1145家上市公司大小非减持了3600亿元,还有210名上市公司高管减持了1400亿元。IPO已成了造就成千上万个十亿、百亿富豪的捷径, 2019-06-21
  • 专家“把脉”中国电影市场:提升品质方能逆袭 2019-06-21
  • “善款资助副局长儿子留学”真相须尽快落地 2019-06-19
  • 21岁女护士失联2天后确认遇害 嫌疑人为其前男友 2019-06-19
  • 中国地质公园名录旅行地中国国家地理网 2019-06-13
  • 玄关运用有四大原则 用的好才能财旺挡煞聚财 ——凤凰网房产 2019-06-10
  • 福利彩票3d投注技巧 新疆11选5推荐号走势图表 香港六合彩免费资料区 娱乐城首存优惠100 体彩36选7最新开奖 十一选五定位胆公式 娱乐平台送68体验金 2019121期蓝球号码预测 20选5几点开 18016足彩进球彩开奖 手机现金捕鱼平台 好运快3开奖今天 上海快三走势图快 2011二肖中特 中国体福彩开奖结果查询结果