美文网首页redis学习
redis的字符串string操作命令

redis的字符串string操作命令

作者: 程序员小饭 | 来源:发表于2019-07-22 15:17 被阅读0次

    1:set key value [ex 秒数]/[px 毫秒数] [nx] /[xx]

    如: set a 1 ex 10 , 10秒有效
    set a 1 px 9000 , 9秒有效(后面的值为毫秒)
    nx: 表示key不存在时,执行操作(默认都是nx)
    xx: 表示key存在时,执行操作

    2:mset multi set 一次性设置多个键值(没法设置过期时间,如果想定期清理需要用别的技术方案)

    例: mset key1 v1 key2 v2 ....

    mset a 1 b 2 ex 10 无法设置过期时间 会把ex当做一个key去处理 值为10

    3:get key 获取key的值(前面通过set和mset的值都可以通过get命令看到)

    4:mget key1 key2 ..keyn 获取多个key的值

    5:setrange key offset value(把字符串的offset偏移字节,改成value) 其实也就是指定位置去替换字符串 有编程经验的同学应该很容易理解

    set test hello

    setrange test 5 a

    get test 结果 helloa

    setrange test 10 a

    get结果为 helloa\x00\x00\x00\x00a 看来如果设置的offset超过了字符串本身的长度范围,则会用空格来补全

    6:append key value 把value追加到key的原值上

    append test bbb 如果test以前的值是aaa 则现在

    7:getrange key start stop 是获取字符串中 [start, stop]范围的值(有点类似于php中的subst,但是还是不太一样)

    对于字符串的下标,左数从0开始,右数从-1开始

    如 test的值为 abcdef

    getrange test 0 3 结果为 abcd
    getrange test -5 -1 bcdef -5就说从右往左数第五个字符b -1 就是从右往左数第一个字符f 所以结果为bcdef
    在这个例子中 getrange test -5 -1 等价于 getrange test 1 5

    8:getset key newvalue

    获取并返回旧值,设置新值

    接上面的例子 如果test为abcdef
    127.0.0.1:6379> getset test 12345
    "abcdef"
    127.0.0.1:6379> get test
    "12345"

    9:incr key 指定的key的值加1,并返回加1后的值

    1):不存在的key当成0,再incr操作
    2): 范围为64有符号

    incrby key number 作用同上 只不过是指定值增加而已

    incrbyfloat key floatnumber 作用同上 只不过用于处理浮点数而已

    10:decr key 作用和incr相反,同时也支持decrby key number 但是无float类型

    11:关于字符串的位操作命令(bit)

    1)getbit key offset 获取值的二进制表示,对应位上的值(从左,从0编号)
    2)setbit key offset value 设置offset对应二进制位上的值

    注意:如果offset过大,则会在中间填充0,offset最大2^32-1,可推出最大的的字符串为512M

    应用:将大写字母转换为小写
    字母A(65) 16进制为:?01000001?
    字母a(97) 16进制为:?01100001
    则可以看出大写转小写 则把索引为2的位设置为1即可, setbit test 2 1
    小写转大写,把索引为2的位设置为0即可? setbit test 2 0

    3)bitop operation destkey key1 [key2 ...] 对key1,key2..keyN作operation,并将结果保存到 destkey 上。operation 可以是 AND、OR、NOT、XOR
    4)bitop operation destkey key1 [key2 ...] 对key1,key2..keyN作operation,并将结果保存到 destkey 上。operation 可以是 AND 、 OR 、 NOT 、 XOR

    对于not操作,key不能写多个

    setbit lower 7 0
    setbit lower 2 1
    构造一个 0010 0000 任何字母只要和他取或(or) 关系,则变成小写字母
    set test Q
    bitop or result test lower
    get result的结果为q

    同理,一个小写字母转换为大写字母的也很容易,只需要提前构造1101 1111(upper)

    bitop and result test upper则可以把小写字母转换为大写字母

    相关文章

      网友评论

        本文标题:redis的字符串string操作命令

        本文链接:https://www.haomeiwen.com/subject/jzlwlctx.html