• Redis之String类型


    Redis之String类型

    在这里插入图片描述
    Redis命令不区分大小写

    1. 赋值/获取值

    赋值:set key value
    取值:get key (当键不存在时候,会返回空结果)

    127.0.0.1:6379> set k1 v1
    OK
    127.0.0.1:6379> get k1
    "v1"
    127.0.0.1:6379> get k2
    (nil)
    127.0.0.1:6379> keys *
    1) "k1"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2. 同时设置/获取多个键值

    MSET/MGET

    127.0.0.1:6379> keys *
    1) "k1"
    127.0.0.1:6379> mset k2 v2 k3 v3 k4 v4
    OK
    127.0.0.1:6379> mget k2 k3 k4
    1) "v2"
    2) "v3"
    3) "v4"
    127.0.0.1:6379> mget k1 k2
    1) "v1"
    2) "v2"
    127.0.0.1:6379> mget k1 k2 k3 k4
    1) "v1"
    2) "v2"
    3) "v3"
    4) "v4"
    127.0.0.1:6379> mget k2 k3 k4 k5
    1) "v2"
    2) "v3"
    3) "v4"
    4) (nil)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3. 数值增减

    • 递增数值:INCR key
    • 增加指定的整数:INCRBY key increment
    • 递减数值:DECR key
    • 减少指定的整数:DECRBY key decrement
    127.0.0.1:6379> incr user:1:article:01
    (integer) 1
    127.0.0.1:6379> incr user:1:article:01
    (integer) 2
    127.0.0.1:6379> incr user:1:article:01
    (integer) 3
    127.0.0.1:6379> get user:1:article:01
    "3"
    127.0.0.1:6379> decr user:1:article:01
    (integer) 2
    127.0.0.1:6379> get user:1:article:01
    "2"
    127.0.0.1:6379> incrby user:1:article:01 20
    (integer) 22
    127.0.0.1:6379> get user:1:article:01
    "22"
    127.0.0.1:6379> decrby user:1:article:01 10
    (integer) 12
    127.0.0.1:6379> get user:1:article:01
    "12"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    4. 获取字符串长度

    STRLEN key
    不存在的key返回0

    127.0.0.1:6379> get user:1:article:01
    "12"
    127.0.0.1:6379> strlen user:1:article:01
    (integer) 2
    127.0.0.1:6379> strlen k1
    (integer) 2
    127.0.0.1:6379> get k1
    "v1"
    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> get name
    "zhangsan"
    127.0.0.1:6379> strlen name
    (integer) 8
    127.0.0.1:6379> strlen hh
    (integer) 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    5. 向尾部追加值

    APPEND key value
    当不存在key时,相当于新建了个key并把后面的值赋给这个key

    127.0.0.1:6379> set say hello
    OK
    127.0.0.1:6379> get say
    "hello"
    127.0.0.1:6379> append say world
    (integer) 10
    127.0.0.1:6379> get say
    "helloworld"
    127.0.0.1:6379> append aaa hhh
    (integer) 3
    127.0.0.1:6379> get aaa
    "hhh"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6. 分布式锁

    set key value [EX seconds] [PX milliseconds] [NX|XX]

    • EX: key在多少秒之后过期
    • PX: key在多少毫秒之后过期
    • NX: 当key不存在的时候,才创建key, 效果等同于setnx
    • XX: 当key存在的时候,覆盖key
    127.0.0.1:6379> set stock 10 ex 10
    OK
    127.0.0.1:6379> get stock
    "10"
    127.0.0.1:6379> ttl stock
    (integer) 1
    127.0.0.1:6379> get stock
    (nil)
    127.0.0.1:6379> get stock
    (nil)
    127.0.0.1:6379> set stock 10 ex 20 nx
    OK
    127.0.0.1:6379> get stock
    "10"
    127.0.0.1:6379> ttl stock
    (integer) 12
    127.0.0.1:6379> ttl stock
    (integer) -2
    127.0.0.1:6379> get stock
    (nil)
    127.0.0.1:6379> setnx k1 v1
    (integer) 0
    127.0.0.1:6379> get k1
    "v1"
    127.0.0.1:6379> setnx k1 vv1
    (integer) 0
    127.0.0.1:6379> get k1
    "v1"
    127.0.0.1:6379> setnx a1 vv1
    (integer) 1
    127.0.0.1:6379> get a1
    "vv1"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    7.应用场景

    • 商品编号,订单编号,项目编号使用INCR生成

    商品编号,订单编号,项目编号等里面除了对应位数上符合业务逻辑的规则,还会多余出几位让自增产生,这个自增如果每次去查上次生成最大的编号,然后再取到再自增,性能会比较低,所以一般会把自增这几位放在redis中,使用INCR命令来实现,最后和别的符合业务规则的位拼接而成新的编号。XASDWEBX001,XASDWEBX002…

    127.0.0.1:6379> incr num
    (integer) 1
    127.0.0.1:6379> get num
    "1"
    127.0.0.1:6379> incr num
    (integer) 2
    127.0.0.1:6379> get num
    "2"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 公司内网发文的文章,统计被员工阅读次数

    每个员工打开文章01时候就执行 incr article:01,然后显示阅读次数是执行get article:01

    127.0.0.1:6379> incr article:01
    (integer) 1
    127.0.0.1:6379> get article:01
    "1"
    127.0.0.1:6379> incr article:01
    (integer) 2
    127.0.0.1:6379> incr article:01
    (integer) 3
    127.0.0.1:6379> incr article:01
    (integer) 4
    127.0.0.1:6379> get article:01
    "4"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    高项 风险管理论文
    OpenCV实战(33)——OpenCV与深度学习的碰撞
    ThreeJS-3D教学七-交互
    基于Java+SpringBoot+vue新冠疫情物资管理系统(毕业设计参考)
    vue相关原理
    【在线编程-Python篇】Python入门 02 类型转换
    C++STL---Vector、List所要掌握的基本知识
    MQTT.js 入门教程:学习笔记
    c++ 资源回收学习
    JDK配置
  • 原文地址:https://blog.csdn.net/stormkai/article/details/133046256