• Redis字符串指令


    Redis系列:安装、初步使用键指令

    键值对读写

    相对来说写入键值对要比读取稍微复杂一点,因为在写入的时候,可能准备写入的那个键已经存在了,下表中安全写入就为了应对这种情况,其功能是,只有当键不存在时,才执行写入操作;另一方面,也存在希望创建临时变量的情况,这时需要在创建时就指定一个过期时间

    读取写入安全写入临时变量
    单值getsetsetnxsetEx/pSetEx
    多组值mgetmsetmsetnx

    下面对其中一些指令进行测试,首先用mset创建了三组键值对,然后用setnx创建a为"aaa",但显然失败了,说明在a已经存在的情况下,setnx无法再创建一个a;但使用set后设置成功了,说明set可以修改键对应的值。

    127.0.0.1:6379> mset a "a" b "b" c "c"
    OK
    127.0.0.1:6379> mget a b c
    1) "a"
    2) "b"
    3) "c"
    127.0.0.1:6379> setnx a "aaa"
    (integer) 0
    127.0.0.1:6379> get a
    "a"
    127.0.0.1:6379> set a "aaa"
    OK
    127.0.0.1:6379> get a
    "aaa"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    setEx和pSetEx的区别为,前者以秒为单位,后者以毫秒为单位,下面创建一个10秒的临时变量,10秒后再查看其剩余时间时,变量已经不在了。

    127.0.0.1:6379> setex s10 10 "10s"
    OK
    127.0.0.1:6379> ttl s10
    (integer) 5
    127.0.0.1:6379> ttl s10
    (integer) -2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后,Redis还提供了一个一边更改一边返回的指令getset,其功能是一边设置新值,一边返回旧值

    127.0.0.1:6379> getset a asdf
    "aaa"
    127.0.0.1:6379> get a
    "asdf"
    
    • 1
    • 2
    • 3
    • 4

    字符串操作

    字符串,首先就是一个字符数组,那么一方面必有长度,另一方面也应该可以对字符进行索引,而且也应该支持字符串的拼接

    127.0.0.1:6379> strlen str
    (integer) 11
    127.0.0.1:6379> set str test_string
    OK
    127.0.0.1:6379> getrange str 1 5
    "est_s"
    127.0.0.1:6379> append str "_tail"
    (integer) 16
    127.0.0.1:6379> get str
    "test_string_tail"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    最后,通过setRange可以指定偏移量修改key中字符串的内容

    127.0.0.1:6379> setrange str 4 -
    (integer) 16
    127.0.0.1:6379> get str
    "test-string_tail"
    127.0.0.1:6379> setrange str 12 head
    (integer) 16
    127.0.0.1:6379> get str
    "test-string_head"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    数值操作

    Redis中并没有数值,但可以把字符串解释为数值,从而也就有了数值操作指令,如下表所示。需要注意,其中只有incrByFloat可以操作浮点数,但其参数可以为负数

    变化1变化给定数值变化给定浮点值
    incrincrByincrByFloat
    decrdecrBy

    示例如下

    127.0.0.1:6379> set num "15"
    OK
    127.0.0.1:6379> incr num
    (integer) 16
    127.0.0.1:6379> incrby num 20
    (integer) 36
    127.0.0.1:6379> incrbyfloat num 25.5
    "61.5"
    127.0.0.1:6379> decrby num "10.5"
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> incrbyfloat num -25.5
    "36"
    127.0.0.1:6379> incrbyfloat num "-25.5"
    "10.5"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    【JVM学习笔记】JVM内存区域定义与内存结构
    Struts2的拦截器
    怎么做好web服务器安全措施
    LeetCode 1700.无法吃午餐的学生数量
    JZ6 从尾到头打印链表
    Tomcat 安装与配置
    Vue2+Vue3
    递归排序进行取值
    大部分PHP程序员,都搞不懂如何安全代码部署【二】(nginx篇)
    编写程序用于显示人的姓名和年龄
  • 原文地址:https://blog.csdn.net/m0_37816922/article/details/133283421