• redis 字符串操作


    redis 字符串创建SET操作

    127.0.0.1:6379> set number "10086"
    OK
    127.0.0.1:6379> set book "the design and lmplementation edis"
    OK
    

     redis 字符串值改变覆盖操作;对一个已经设置了值得字符串再执行SET命令时将导致键的旧值会被新值覆盖

    127.0.0.1:6379> set cx rd
    OK
    127.0.0.1:6379> set cx fd
    OK
    

      在执行第二遍的时键的值将从rd变成fd;redis 2.6.12版本开始。用户可以通过SET 命令提供可选参数NX (不覆盖已存在的,不存在自动创建)选项或者XX(覆盖已存在的,但键不存在时不会自动创建)选择来指示SET命令是否覆盖已存在的值

    127.0.0.1:6379> set key value [NX|XX]
    

      示例存在不覆盖

    127.0.0.1:6379> set cx hh NX   
    (nil)
    

      存在覆盖操作

    127.0.0.1:6379> set cx hh XX
    OK
    

      不存在提示nil

    127.0.0.1:6379> set st hg XX
    (nil)
    

      不存在创建

    127.0.0.1:6379> set st hg NX
    OK
    

      redis 获取字符串GET操作

    127.0.0.1:6379> GET key
    

       get 命令接受一个字符串键作为参数,然后返回该键相关的值

    127.0.0.1:6379> get cx
    "hh"
    127.0.0.1:6379> get book
    "the design and lmplementation edis"
    

      如果用户给定的字符串键在数据库中并没有相关的值。那么Get命令将返回一个空值

    127.0.0.1:6379> get data
    (nil)
    

      获取旧值并更新新值GETSET

          getset命令就像get与set的组合版本,getset命令首先获取字符串键哦已有的值,接着为键设置新值,最后吧之前就值返回给用户

    127.0.0.1:6379> GETSET key value 
    

      用GETSET获取cx旧值并为它设置新值

    127.0.0.1:6379> get st
    "hg"
    127.0.0.1:6379> getset cx "18501207824"
    "hh"
    127.0.0.1:6379> get cx
    "18501207824"
    

      如果被设置的键不存在于数据库,那么getset命令将返回空作为键的旧值

    127.0.0.1:6379> get qwe
    (nil)
    127.0.0.1:6379> getset qwe "123456"
    (nil)
    127.0.0.1:6379> get qwe
    "123456"
    

      mset 一次为多个字符串设置值

        除了SET和getset命令之外。redis还提供了mset命令用于对字符串进行设置。与set和getset命令只能设置单个字符串不同,mset命令可以一次为多个字符串设置值

    [root@maseter ~]# redis-cli 
    127.0.0.1:6379> mset key value [key valkue ...] [
    

      同时设置rd 、rs 、rc三个值。

    127.0.0.1:6379> mset rd "52" rc "58" rs "78"
    OK
    127.0.0.1:6379> get rd
    "52"
    127.0.0.1:6379> get rc
    "58"
    127.0.0.1:6379> get rs
    "78"
    

      此外如果给定字符串已经存在有相关的值,那么Mset  命令也会使用新值覆盖已经存在的旧值,使用mset覆盖rc的旧值

    127.0.0.1:6379> mset rd "52" rc "18501207824" rs "78"
    OK
    127.0.0.1:6379> get rc
    "18501207824"
    

      mget 一次获取多个字符串键的值

           mget 命令就是一个多键版本的get命令,mget接受一个或多个字符串键作为参数,并返回这些的值

    127.0.0.1:6379> mget key [key ...] 
    

      获取多个值

    127.0.0.1:6379> mget rd rc rs qwe
    1) "52"
    2) "18501207824"
    3) "78"
    4) "123456"
    127.0.0.1:6379> mget kl   不存在报空
    1) (nil)
    

      msetnx只在键不存在时,一次为多个字符串赋值

           msetnx与mset命令一样都可以对多个字符串进行设置

    127.0.0.1:6379> msetnx key value [key value ...] [key
    

      msetnx 给多个字符串设置值

    127.0.0.1:6379> msetnx as "1658" df "854" cv "8582"
    (integer) 1
    

      msetnx 给多个字符串设置值,有一个值存在,整体不执行

    127.0.0.1:6379> set p1 "4"
    OK
    127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
    1) "4"
    2) (nil)
    3) (nil)
    4) (nil)
    5) (nil)
    6) (nil)
    127.0.0.1:6379> msetnx p1 "12" p2 "23" p3 "67" p4 "45" p5 "69" p6 "43"
    (integer) 0
    127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
    1) "4"
    2) (nil)
    3) (nil)
    4) (nil)
    5) (nil)
    6) (nil)
    

      msetnx 给多个字符串设置值

    127.0.0.1:6379> msetnx  p2 "23" p3 "67" p4 "45" p5 "69" p6 "43"
    (integer) 1
    127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
    1) "4"
    2) "23"
    3) "67"
    4) "45"
    5) "69"
    6) "43"
    

      sterlen:获取字符串值得字节长度

    127.0.0.1:6379> set ol "qweriptfcxc"
    OK
    127.0.0.1:6379> strlen ol
    (integer) 11
    

      如果不存在将返回0

    127.0.0.1:6379> strlen oi
    (integer) 0
    

        字符串索引;获取字符串指定索引范围getrange

            通过使用getrange命令,用户可以获取字符串值从start索引开始,到end索引结束

    127.0.0.1:6379> set re "hellp world"
    OK
    127.0.0.1:6379> get re
    "hellp world"
    127.0.0.1:6379> getrange re 3 7
    "lp wo"
    127.0.0.1:6379> getrange re 0 4
    "hellp"
    127.0.0.1:6379> getrange re -11 -7
    "hellp"
    

      对字符串值的指定索引范围进行设置setrange,一个一个字符替换

    127.0.0.1:6379> get re
    "hellp world"
    127.0.0.1:6379> setrange re 6 Redis      6表示从哪个字符开始替换
    (integer) 11
    127.0.0.1:6379> get re
    "hellp Redis"
    

      自动扩展被修改的字符串;当用户给定的新内容比被替换的内容更长时,setrange命令就会自动扩展被修改的字符串,从而保证新内容顺利写入

    127.0.0.1:6379> get re
    "hellp Redis"
    127.0.0.1:6379> setrange re 6 ", this is a massage send from peter."
    (integer) 42
    127.0.0.1:6379> get re
    "hellp , this is a massage send from peter."
    

      在值内填充空字节;setrange除了会根据用户给定的新内容自动扩展字符串,还会根据用户给定的index索引扩展字符串,当用户给定的index索引超出字符串长度时,字符串值末尾直到索引index-1之间的部位将用空白字节填充,换句话这些字节的所有二进制位会被设置0

    127.0.0.1:6379> set gf "hello"
    OK
    127.0.0.1:6379> get gf
    "hello"
    127.0.0.1:6379> setrange gf 10 world
    (integer) 15
    127.0.0.1:6379> get gf
    "hellox00x00x00x00x00world"
    

      append 追加内容到值末尾

    127.0.0.1:6379> append key suffix 
    

      append 在执行追加操作后,会返回字符串值当前的长度作为返回值

    127.0.0.1:6379> get ch
    "redis"
    127.0.0.1:6379> append ch " is a database"
    (integer) 19
    127.0.0.1:6379> get ch
    "redis is a database"
    

      处理不存在的键时;如果用户给定的键不存在,那么append命令会将键的值初始为空字符串,然后再追加操作,最终结果与set命令为键设置值很像

    127.0.0.1:6379> get tu
    (nil)
    127.0.0.1:6379> append tu "1854358"
    (integer) 7
    127.0.0.1:6379> get tu
    "1854358"
    

      使用incrby与decrby:对整数执行加减法操作

          当字符串键存储的值能被Redis解释为整数时,用户就可以通过incrby命令和decrby命令对存储整数值进行加减法操作,不能多浮点型数字(小数)进行加减操作

    127.0.0.1:6379> incrby key increment 
    

      incrby加法操作

    127.0.0.1:6379> set h 90
    OK
    127.0.0.1:6379> get h
    "90"
    127.0.0.1:6379> incrby h 400
    (integer) 490
    127.0.0.1:6379> incrby h 700
    (integer) 1190
    127.0.0.1:6379> incrby h 650
    (integer) 1840
    127.0.0.1:6379> get h
    "1840"
    

      decrby减法操作

    127.0.0.1:6379> set y 10086
    OK
    127.0.0.1:6379> decrby y 500
    (integer) 9586
    127.0.0.1:6379> decrby y 568
    (integer) 9018
    127.0.0.1:6379> decrby y 18
    (integer) 9000
    

      处理不存在的键,对其进行加减操作

    127.0.0.1:6379> get v
    (nil)
    127.0.0.1:6379> incrby v 90
    (integer) 90
    127.0.0.1:6379> get v
    "90"
    127.0.0.1:6379> get e
    (nil)
    127.0.0.1:6379> decrby e 60
    (integer) -60
    127.0.0.1:6379> get e
    "-60"
    

      incr decr对整数执行加1减1操作

    127.0.0.1:6379> set q 9
    OK
    127.0.0.1:6379> incr q
    (integer) 10
    127.0.0.1:6379> incr q
    (integer) 11
    127.0.0.1:6379> incr q
    (integer) 12
    127.0.0.1:6379> incr q
    (integer) 13
    127.0.0.1:6379> get q
    "13"
    127.0.0.1:6379> get i  一个空键
    (nil)
    127.0.0.1:6379> incr i
    (integer) 1
    127.0.0.1:6379> incr i
    (integer) 2
    127.0.0.1:6379> incr i
    (integer) 3
    127.0.0.1:6379> get i
    "3"
    

      decr 进行减一操作

    127.0.0.1:6379> get q
    "13"
    127.0.0.1:6379> decr q
    (integer) 12
    127.0.0.1:6379> decr q
    (integer) 11
    127.0.0.1:6379> decr q
    (integer) 10
    127.0.0.1:6379> decr q
    (integer) 9
    127.0.0.1:6379> get j
    (nil)
    127.0.0.1:6379> decr j
    (integer) -1
    127.0.0.1:6379> decr j
    (integer) -2
    127.0.0.1:6379> decr j
    (integer) -3
    127.0.0.1:6379> get j
    "-3"
    

      对整数执行浮点数的加法操作incrbyfloat

    127.0.0.1:6379> incrbyfloat key increnent 
    

      incrbyfloat命令可以把一个浮点数增量到字符串键存储的数值上

    127.0.0.1:6379> set j 4.5
    OK
    127.0.0.1:6379> incrbyfloat j 2.55
    "7.05"
    127.0.0.1:6379> get j
    "7.05"
    

      incrbyfloat命令遇到不存在的键时,会先将键的值初始为0,然后在执行行营的操作 

    127.0.0.1:6379> get f
    (nil)
    127.0.0.1:6379> incrbyfloat f 2.55
    "2.55"
    127.0.0.1:6379> get f
    "2.55"
    

      使用incrbyfloat命令执行浮点数减操作

    127.0.0.1:6379> set o 8.15
    OK
    127.0.0.1:6379> incrbyfloat 0 -2.7
    "-2.7"
    127.0.0.1:6379> incrbyfloat o -2.7
    "5.45"
    127.0.0.1:6379> get 0
    "-2.7"
    127.0.0.1:6379> get o
    "5.45"
    

      使用incrbyfloat命令处理浮点数加整数

    127.0.0.1:6379> set j 99
    OK
    127.0.0.1:6379> get j
    "99"
    127.0.0.1:6379> incrbyfloat j 5.9
    "104.9"
    127.0.0.1:6379> get j
    "104.9"
    127.0.0.1:6379> incrbyfloat j 2.1
    "107"
    

      注意:虽然redis并不限制字符串存储的浮点数的小数长度,但使用incrbyfloat命令处理浮点数的时候,命令最多只会保留计算结果小数点后17未数字。超出范围将被截断

    127.0.0.1:6379> set t 0.123456789123456789123
    OK
    127.0.0.1:6379> incrbyfloat t 0
    "0.12345678912345679"
    

      

    草都可以从石头缝隙中长出来更可况你呢
  • 相关阅读:
    几个简单递归js 实现
    js中阻止事件冒泡
    判断是否IE 最酷的代码
    C# Hashtable 读取 key 和 value
    ubuntu搭建jdk+jenkins
    Shell逻辑运算符及表达式
    Linux命令的返回值
    python调用c/c++时传递结构体参数
    Git错误总结
    Bash Shell中命令行选项/参数处理
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/12360834.html
Copyright © 2020-2023  润新知