zoukankan      html  css  js  c++  java
  • redis String 结构及命令详解

    String 结构及命令详解

    设置一个 KV

    set key value [EX 秒数]|[PX 毫秒数] [NX 不存在]|[XX 存在]
    例如:
    set site www.site.com EX 10
    
    当EX 和 PX 同时存在的时候 已后面设置的为准 他们是互斥的 一起使用没有意义
    NX 不存在时设置
    XX 存在时设置
    
    127.0.0.1:6379> set site www.site.com EX 10 NX
    OK
    127.0.0.1:6379> set site www.site.com EX 10 NX
    (nil)
    127.0.0.1:6379> set sites www.site.com EX 10 XX
    (nil)
    127.0.0.1:6379> set sites www.site.com EX 10 NX
    OK
    127.0.0.1:6379> set sites www.sites.com EX 10 XX
    OK
    127.0.0.1:6379> keys *
    1) "age"
    2) "sites"
    127.0.0.1:6379> keys *
    1) "age"
    127.0.0.1:6379> set sige sige.com xx
    (nil)
    127.0.0.1:6379> set sige sige.com Nx
    OK
    

    一次性设置/获取多个 KV

    mset k1 v1 k2 v2 k3 v3 k4 v4   # mset  = multi set
    例如:
    mset a aa b bb c cc
    
    mget k1 k2 k3 ... kn
    例如:
    mget a b c
    
    127.0.0.1:6379> mset a aman b bold c control d dimod
    OK
    127.0.0.1:6379> keys *
    1) "c"
    2) "d"
    3) "b"
    4) "a"
    127.0.0.1:6379> mget a b c
    1) "aman"
    2) "bold"
    3) "control"
    

    把字符串的 offset 偏移字节,改成 value

    setrange key offset value
    例如:
    set word 2 ??
    # 从 0 开始计数 第 2 位的字符 换成两个"?"
    
    
    当 offset 超出 value 的范围的时候 用 0x00 填充
    
    127.0.0.1:6379> set word helloworld
    OK
    127.0.0.1:6379> get word
    "helloworld"
    127.0.0.1:6379> setrange word 2 ??
    (integer) 10
    127.0.0.1:6379> get word
    "he??oworld"
    127.0.0.1:6379> setrange word 20 kk
    (integer) 22
    127.0.0.1:6379> get word
    "he??oworldx00x00x00x00x00x00x00x00x00x00kk"
    

    向字符串后边附加

    append key value
    例如:
    append word @@ # 向 key 所对应的value 末尾处添加两个 "@@"
    
    127.0.0.1:6379> append word @@
    (integer) 24
    127.0.0.1:6379> get word
    "he??oworldx00x00x00x00x00x00x00x00x00x00kk@@"
    

    获取key 所对应value 的部分value

    getrange key start stop  # [start, stop]  前后都包括
    例如:
    getrange area 1 4
    
    127.0.0.1:6379> set area chinese
    OK
    127.0.0.1:6379> getrange area 1 4
    "hine"
    127.0.0.1:6379> getrange area 4 10   # 后半边超出范围 
    "ese"
    127.0.0.1:6379> getrange area 10 20  # 全部超出范围
    ""
    127.0.0.1:6379> getrange area 0 -3   # 支持负索引
    "chine"
    127.0.0.1:6379> getrange area 4 3    # 不符合常规的 start 比 stop 还大 返回空字符串
    ""
    

    获取返回旧值,返回新值

    getset key value  # value 是已存在 key 的新的 value
    例如:
    getset status wakeup
    
    127.0.0.1:6379> set status sleep
    OK
    127.0.0.1:6379> getset status wakeup
    "sleep"
    

    Value 增加 1、减少 1(必须为数字)

    incr key  # 增加 1
    例如:
    incr age
    
    decr key  # 减少 1
    例如:
    decr age
    
    127.0.0.1:6379> get age
    "10"
    127.0.0.1:6379> incr age
    (integer) 11
    127.0.0.1:6379> decr age
    (integer) 10
    127.0.0.1:6379> set name fuck  # value 不是数字
    OK
    127.0.0.1:6379> incr name
    (error) ERR value is not an integer or out of range
    

    value 增加 、减少 自定义的”整数“数值

    incrby key [number]  # 增加一个自定义的数值
    例如:
    incrby age 5
    
    decrby key [number]  # 减少一个自定义的数值
    例如:
    decrby age 5
    
    127.0.0.1:6379> incrby age 3
    (integer) 13
    127.0.0.1:6379> decrby age 2
    (integer) 11
    127.0.0.1:6379> incrby age  # 不能省略 没有默认的值
    (error) ERR wrong number of arguments for 'incrby' command
    

    value 增加浮点数值

    incrbyfloat key [float number]
    例如:
    incrbyfloat age 0.5
    
    没有 decrbyfloat 这样一个操作
    
    127.0.0.1:6379> incrbyfloat age .5
    "11.5"
    127.0.0.1:6379> decrbyfloat age 0.3
    (error) ERR unknown command `decrbyfloat`, with args beginning with: `age`, `0.3`,
    

    在位上做操作

    setbit key offset [0/1]
    例如:
    setbit char 2 1  # 0100 0001 65 'A' ===> 0110 0001  97 'a'
    
    如果offset 过大 则会中间填充 0
    offset 最大为多少呢? (2^32 - 1) 可推算出 value  最大为512M
    
    2^32/8 = 2^32 * 2^-3 = 2^29 = 10 + 10 + 9 k->M. 512M   1KB = 1024B(2^10) 1M = 1024KB
    
    127.0.0.1:6379> setbit char 2 1
    (integer) 0
    127.0.0.1:6379> get char
    "a"
    127.0.0.1:6379> setbit char 2 0
    (integer) 1
    127.0.0.1:6379> get char
    "A"
    
    bitop [and/or/xor/not] 接收者 运算者1 运算者2
    例如:
    bitop OR char char lower
    
    127.0.0.1:6379> setbit lower 2 1  # 0010 0000
    (integer) 0
    127.0.0.1:6379> get lower
    " "
    127.0.0.1:6379> set char Q   
    OK
    127.0.0.1:6379> bitop OR char char lower  # 做或or运算 转换大小写  97-65=32
    (integer) 1
    127.0.0.1:6379> get char 
    "q"
    
    # 如果想转换大写 请使用 1101 1111  做 and 运算
    
  • 相关阅读:
    pixijs shader 制作百叶窗效果
    pixijs shader 贴图溶解效果教程
    shadertoy使用教程
    pixijs shader教程
    glsl shader简明教程系列1
    javascript判断mp3是否播放完
    wxWidgets Tutorial
    NYOJ 214 最长上升子序列nlogn
    解决codeforces访问慢的问题
    dp 斯特林数 HDU2512一卡通大冒险
  • 原文地址:https://www.cnblogs.com/sha-ka/p/12779233.html
Copyright © 2011-2022 走看看