• MINI车联网服务3月起升级至4G网络 增加新功能 2018-02-18
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-18
  • 冬奥会短节目第四 金博洋:伤病令我更强大 2018-02-18
  • 天津市北辰区委书记冯卫华:强化政治担当 把主体责任落实落细 2018-02-17
  • 正月初一客流继续回落 全国铁路预计发送旅客389万人次 2018-02-17
  • 送别余光中:诗人虽远行,乡愁永流传 2018-02-17
  • 集团原董事长违纪被查 人员伤亡事故频发 湖北宜化:去年亏损额超过公司市值 2018-02-17
  • 图片故事:“六个人”的火车站 2018-02-16
  • 【马来西亚房产】雅诗阁之星十年包租可续租! ——凤凰网房产马来西亚 2018-02-16
  • 大量顺差在中国,多数利润归美国 2018-02-16
  • 河北今年将削减煤炭消费500万吨 2018-02-16
  • 开创生态文明新时代 绘出美丽中国新图景 2018-02-15
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-15
  • 山东求败让辽篮意外受益 与所在半区其他四队常规赛战绩为7胜1负 2018-02-15
  • 春节期间乌鲁木齐电力营业厅每天11时至14时30分营业 2018-02-14
  • Redis系列-存储篇string主要操作函数小结

    栏目: redis 发布于: 2014-01-19 11:32:55
    1、新增

    a)set

    语法:set key value

    解释:把值value赋给key,如果key不存在,新增;否则,更新

    [root@xsf001 ~]# redis-cli 
    redis 127.0.0.1:6379> set user.1.name zhangsan #设置user.1.name 为zhangsan
    OK
    redis 127.0.0.1:6379> set user.name 45      #设置user.1.name 为45
    OK
    b)setnx

    语法:setnx key value

    解释:只insert不update,即,仅仅key不存在时,则设置key的值为value,并返回1,否则返回0  。setnx 是set if not exists 的缩写

    redis 127.0.0.1:6379> setnx user.1.name zhangsan   #user.1.name已经存在,则返回0
    (integer) 0
    redis 127.0.0.1:6379> setnx user.2.name zhangsan  #user.2.name不存在,则设置
    (integer) 1
    c)setex

    语法: setex key seconds value

    解释:设置key的过期时间和值。过期时间seconds单位是秒。设置过期时间和值是原子操作,如果redis仅仅当做缓存,这个很命令很有用。

    redis 127.0.0.1:6379> setex user.2.age 2 14  #把user.2.age 的值设14 并且2秒后过期失效
    OK
    redis 127.0.0.1:6379> get user.2.age  #失效前
    "14"
    redis 127.0.0.1:6379> get user.2.age #失效后
    (nil)
    
    d)mset

    语法:mset key value [key value ...]

    解释:同时设置多个key-value

    redis 127.0.0.1:6379> mset user.4.name lisi user.4.age 34  #设置user.4.name=lisi,user.4.age=34
    OK
    redis 127.0.0.1:6379> get user.4.name
    "lisi"
    redis 127.0.0.1:6379> get user.4.age
    "34"
    e)msetnx

    语法:msetnx key value [key value ...]

    解释:所有key都不存在才执行set操作

    redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.age 34  #key 都设置过,无法再次set
    (integer) 0
    redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.std 3   #key user.4.name 曾设置过,无法再次设置
    (integer) 0
    redis 127.0.0.1:6379> msetnx user.4.tech lisi user.4.std 3   #key都没有设置过,可以再次设
    (integer) 1
    2、查询

    a)get

    语法:get key

    解释:获取key所set的值

    redis 127.0.0.1:6379> get user.4.name  #获取user.4.name 的值
    "lisi"
    redis 127.0.0.1:6379> get user.4.age
    "34"
    redis 127.0.0.1:6379> get user.4.tech
    "lisi"
    redis 127.0.0.1:6379> get user.4.std
    "3"
     b)mget

    语法: get key [key]

    解释:批量获取key的值。程序一次获取多个值,可以减少网络连接损耗。

    redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std #批量获取存在key的值
    1) "lisi"   #user.4.name的值
    2) "34"     #user.4.age 的值
    3) "3"      #user.4.std 的值
    
    redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std user.4.fri  #key user.4.fri 不存在仍然可以返回
    1) "lisi"
    2) "34"
    3) "3"
    4) (nil) #user.4.fri 的值
     c)getrange

    语法:getrange key star end

    解释:获取存储在key中value的字串。字符串的截取有star和end决定,字符串的第一个字符编号是0,第二个是1,一次类推;如果是负数,-1是最后一个字符,-2是倒数第二个字符,一次类推。

    redis 127.0.0.1:6379> get user.4.name
    "lisi"
    redis 127.0.0.1:6379> getrange user.4.name 0 3  # 0 表示开始
    "lisi"
    redis 127.0.0.1:6379> getrange user.4.name 1 2
    "is"
    redis 127.0.0.1:6379> getrange user.4.name 1 -2 #-2 表示倒数第二
    "is"
    redis 127.0.0.1:6379> getrange user.4.name -1 -2  # end 》 start
    ""
    redis 127.0.0.1:6379> getrange user.4.name 1 66  #end 》 值的长度
    "isi"
    
    3、修改

    a)getset

    语法:getset key value

    解释:设置key的值,并返回key的旧值。

    redis 127.0.0.1:6379> get user.4.name   #存在的key
    "lisi"
    redis 127.0.0.1:6379> getset user.4.name wangwu  #把存在的user.4.name设置为wagnwu
    "lisi"
    redis 127.0.0.1:6379> get user.4.name  
    "wangwu"
    redis 127.0.0.1:6379> get user.5.name  #不存在的key
    (nil)
    redis 127.0.0.1:6379> getset user.5.name lisi
    (nil)
    redis 127.0.0.1:6379> get user.5.name
    "lisi"
    b) append

    语法:append key value

    解释:key存在,在旧值的后面追加value;key不存在,直接set

    redis 127.0.0.1:6379> get user.4.name #存在的key
    "wangwu"
    redis 127.0.0.1:6379> append user.4.name 01
    (integer) 8
    redis 127.0.0.1:6379> get user.4.name
    "wangwu01"
    redis 127.0.0.1:6379> get user.6.name #不能存在的key
    (nil)
    redis 127.0.0.1:6379> append user.6.name jim
    (integer) 3
    redis 127.0.0.1:6379> get user.6.name
    "jim"
    c)setrange

    语法:setrange key offset value

    解释:用value重写key值的一部分,偏移量由offset指定

    redis 127.0.0.1:6379> get user.4.name  #key存在
    "wangwu01"
    redis 127.0.0.1:6379> setrange user.4.name 0 lisi
    (integer) 8
    redis 127.0.0.1:6379> get user.4.name
    "lisiwu01"
    redis 127.0.0.1:6379> setrange user.4.name 9 lisi  # offset 》字符串长度
    (integer) 13
    redis 127.0.0.1:6379> get user.4.name
    "lisiwu01\x00lisi"
    redis 127.0.0.1:6379> setrange user.4.name 8 lisi
    (integer) 13
    redis 127.0.0.1:6379> get user.4.name
    "lisiwu01lisii"
    redis 127.0.0.1:6379> get user.6.std #key 不存在
    (nil)
    redis 127.0.0.1:6379> setrange user.6.std 0 3
    (integer) 1
    redis 127.0.0.1:6379> get user.6.std
    "3"
    d)incr

    语法:incr key

    解释:key中如果存储的是数字,则可以通过incr递增key的值,返回递增后的值。如果key不能存在,视为初始值为0

    redis 127.0.0.1:6379> get user.7.age #key不存在 ,初始值视为0,
    (nil)
    redis 127.0.0.1:6379> incr user.7.age 
    (integer) 1
    redis 127.0.0.1:6379> get user.7.age
    "1"
    redis 127.0.0.1:6379> incr user.7.age
    (integer) 2
    e)incrby

    语法:incrby key increment

    解释:用指定的步长增加key存储的数字。如果步长increment是负数,则减

    redis 127.0.0.1:6379> get user.7.age
    "3"
    redis 127.0.0.1:6379> incrby user.7.age 15  #增加15
    (integer) 18
    redis 127.0.0.1:6379> get user.7.age
    "18"
    redis 127.0.0.1:6379> incrby user.7.fri 18  #key不能存在,原值视为0
    (integer) 18
    redis 127.0.0.1:6379> get user.7.fri
    "18"
    redis 127.0.0.1:6379> incrby  user.7.age -1  #步长为负
    (integer) 17
    redis 127.0.0.1:6379> get user.7.age
    "17"
    f)decr

    语法:decr key

    解释:递减key保存的数字,如果key不存在,初始值视为0

    redis 127.0.0.1:6379> get user.7.age
    "17"
    redis 127.0.0.1:6379> decr user.7.age
    (integer) 16
    redis 127.0.0.1:6379> decr user.7.num #key 不存在,初始值视为0
    (integer) -1
    redis 127.0.0.1:6379> decr user.7.num
    (integer) -2
    g)decrby

    语法:decrby key decrement

    解释:用指定的步长递减key的值,如果步长decrment是负值,则递增

    redis 127.0.0.1:6379> decrby user.7.num 4  #递减
    (integer) -6
    redis 127.0.0.1:6379> decrby user.7.num -9 #负值,递增
    (integer) 3
    注意:递增递减系列的函数,只能对保存的是数字的key操作,不能是字符串

    4)删除

    语法:del key [key]

    解释:删除指定的key,返回删除key的个数

    redis 127.0.0.1:6379> del user.7.num
    (integer) 1
    redis 127.0.0.1:6379> get user.7.num
    (nil)
    redis 127.0.0.1:6379> del user.7.age user.7.fri #删除多个key
    (integer) 2
    redis 127.0.0.1:6379> mget user.7.age user.7.fri
    1) (nil)
    2) (nil)
    
    5)其他

    语法:strlen key

    解释:获取key中所存储值的长度

    redis 127.0.0.1:6379> get user.1.name
    "45"
    redis 127.0.0.1:6379> strlen user.1.name  #user.1.name 长度
    (integer) 2
    redis 127.0.0.1:6379> strlen user.8.name #key不存在
    (integer) 0
    更多信息,请参考:http://www.rocksun.cn/commands#string

    转载自:http://www.rocksun.cn/love__coder/article/details/8274331

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:Redis系列-存储篇string主要操作函数小结
    IT技术书籍推荐:
    Java编程思想(第4版)
    Java编程思想(第4版)
    埃史尔 (作者), 陈昊鹏 (译者)
    《Java编程思想(第4版)》书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Iava’UO系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。 从《Java编程思想(第4版)》一书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对c、c++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。