zoukankan      html  css  js  c++  java
  • Redis中String类型的相关命令操作

    String

    append

    如果key已存在,则直接在value追加值,如果key不存在,则会插件一个新的value为空的key,然后在追加

    127.0.0.1:6379> set name lisi
    OK
    127.0.0.1:6379> get name
    "lisi"
    127.0.0.1:6379> append name " hello"
    (integer) 10
    127.0.0.1:6379> get name
    "lisi hello"
    

    返回的是最末尾字符串的位置

    decr

    可以实现对value进行-1操作

    127.0.0.1:6379> get age
    "15"
    127.0.0.1:6379> decr age
    (integer) 14
    127.0.0.1:6379> get age
    "14"
    

    返回的值是-1之后的值也就是该key目前值,注意对非整数字符串操作会报错

    decrby

    decr一样,只不过可以自定义步长

    127.0.0.1:6379> decrby age 5
    (integer) 9
    127.0.0.1:6379>
    

    注意:自减操作是可以一直减下去

    get

    获取对应的key,不存在则返回nil

    getrange

    返回key对应的value的字串(字符串中的连续某一段),字串有start和end决定范围,从左往右,从0开始

    127.0.0.1:6379> get hello
    "hello redis"
    127.0.0.1:6379> getrange hello 0 4
    "hello"
    

    字符串的结果输出始终是从左往右
    getrange key start end.注意:如果下标是负数,则位置从右往左,start和end都如此
    始终记得,start是开始,start的位置就已经决定字串的最终可能性范围,start决定了子串开始的位置,
    那么.end的结束位置必须在start的右边才有值,不管是从左往右还是从右往左

    getset

    为指定的key设置值并返回修改之前的值

    127.0.0.1:6379> getset name zhangsan
    "lisi hello"
    127.0.0.1:6379> get name
    "zhangsan"
    127.0.0.1:6379>
    

    incr

    +1

    127.0.0.1:6379> get age
    "4"
    127.0.0.1:6379> incr age
    (integer) 5
    

    和decr注意是一样值要是整数

    incrby

    如上,自加自定义步长

    incrbyfloat

    增长浮点数

    必须给定增长的点数

    127.0.0.1:6379> set key2 3.3
    OK
    127.0.0.1:6379> incrbyfloat key2 0.3
    "3.6"
    127.0.0.1:6379>
    

    注意,在定义一个key的时候,如果给的值精确到小数点后两位,么在增长的时候它的精度会自动增加

    如下:

    127.0.0.1:6379> get key1
    "45.36"
    127.0.0.1:6379> incrbyfloat key1 0.5
    "45.859999999999999"
    

    mget和mset

    就是get和set的批量操作

    • MGET的语法格式:MGET key1 key2 key3
    • MSET的语法格式:MSET key1 value1 key2 value2 ... ...
    127.0.0.1:6379> mget name age
    1) "zhangsan"
    2) "5"
    127.0.0.1:6379> mset name jack age 20
    OK
    127.0.0.1:6379> mget name age
    1) "jack"
    2) "20"
    127.0.0.1:6379>
    

    setex

    给指定的key设置值并设置过期时间,单位为秒

    127.0.0.1:6379> get name
    "jack"
    127.0.0.1:6379> setex name 30 aron
    OK
    

    psetex

    同上,单位为毫秒

    setnx

    setnx是set if not exists,如果key已存在,不做操作,只有在key不存在则创建新的key

    127.0.0.1:6379> setnx name jack
    (integer) 1
    127.0.0.1:6379> setnx name aron
    (integer) 0
    127.0.0.1:6379> get name
    "jack"
    127.0.0.1:6379>
    

    msetnx

    批量操作,注意是类似事务的操作

    如下:因为name已经存在,导致key5也无法创建

    127.0.0.1:6379> msetnx name aron key5 23
    (integer) 0
    127.0.0.1:6379> get key5
    (nil)
    127.0.0.1:6379>
    

    setrange

    getrange类似,相当于在字符串的一个范围内替换值,
    setrange key index value
    index:开始的下标位置,直到value的长度结束位置

    127.0.0.1:6379> get text
    "hello world"
    127.0.0.1:6379> setrange text 6 redis
    (integer) 11
    127.0.0.1:6379> get text
    "hello redis"
    127.0.0.1:6379> setrange text 6 xx
    (integer) 11
    127.0.0.1:6379> get text
    "hello xxdis"
    127.0.0.1:6379>
    

    strlen

    计算key的value的长度

  • 相关阅读:
    华为为什么再发布2016年就已经对外露脸甚至商用的欧拉操作系统。
    更安全,仅允许当前用户运行脚本法:vscode运行python时提示无法加载文件xxx.venvScriptsactivate.ps1
    ubuntu下安装odoo 14.0框架
    安利: Swagger工具, 一个REST APIs文档生成工具
    关注Brython 项目,在浏览器中运行python,部分替代javascript
    2021年最火的前端框架
    2021 最受欢迎的前端 八 个 UI 框架
    取代os.path的模块pathlib
    Java中Int转byte分析
    基于Java的时间转换:Date、Timestamp和String时间转化
  • 原文地址:https://www.cnblogs.com/liangshu/p/12403226.html
Copyright © 2011-2022 走看看