zoukankan      html  css  js  c++  java
  • redis的String类型以及其操作

    Redis的数据类型

    String类型以及操作

    String是最简单的数据类型,一个key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化对象

    Set
    设置key对应的值为string类型的value
    例如:我们添加一个name为lijie的键值对

    127.0.0.1:6379> set name lijie
    OK
    127.0.0.1:6379> get name
    "lijie"
    127.0.0.1:6379> set name lambrother
    OK
    127.0.0.1:6379> get name
    "lambrother"

    我们再次设置name为lambrother,后面发现将前面的lijie覆盖了。


    Setnx
    设置key对应的值为string类型的value,如果key已经存在,返回0,nx是not exist的意思
    例如我们添加一个name = lijie_new的键值对

    127.0.0.1:6379> setnx name lijie_new
    (integer) 0
    127.0.0.1:6379> get name
    "lambrother"
    127.0.0.1:6379> setnx age 20
    (integer) 1
    127.0.0.1:6379> get age 
    "20"



    Setex
    设置key对应的值为string类型的value,并指定键值对的有效期
    例如:我们添加一个haircolor = red的键值对,并制定有效期为10秒

    127.0.0.1:6379> setex haircolor 10 red 
    OK
    127.0.0.1:6379> get haircolor
    "red"
    10秒后
    127.0.0.1:6379> get haircolor
    (nil) nil指的是空的意思。
    127.0.0.1:6379> setnx haircolor red
    (integer) 1 //验证了前面的键值对失效了。



    Setrange
    设置指定key的value值的子字符串
    例如:我们希望将lijie的126邮箱替换成为gmail邮箱

    127.0.0.1:6379> set email lijie@lambrother.net
    OK
    127.0.0.1:6379> get email
    "lijie@lambrother.net"
    127.0.0.1:6379> setrange email 6 li-jie.me //6代表的是原来字符串的开始替换位置的下标
    (integer) 20 //20 代表的是新字符串的长度
    127.0.0.1:6379> get email
    "lijie@li-jie.mer.net" //观察发现替换后的字符串如果长度没有原来字符串长,会将原来字符串的剩余依旧拼接



    mset
    一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置

    127.0.0.1:6379> mset key1 lijie1 key2 lijie2
    OK
    127.0.0.1:6379> get key1
    "lijie1"
    127.0.0.1:6379> get key2
    "lijie2"



    msetnx
    一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key

    127.0.0.1:6379> msetnx key3 lambrother key4 lijie@lambrother.net key2 lijie
    (integer) 0
    127.0.0.1:6379> get key3
    (nil)
    127.0.0.1:6379> get key4
    (nil)
    127.0.0.1:6379> msetnx key3 lambrother key4 lijie@lambrother.net key5 lijie
    (integer) 1
    127.0.0.1:6379> get key3
    "lambrother"
    127.0.0.1:6379> get key4
    "lijie@lambrother.net"
    127.0.0.1:6379> get key5
    "lijie"
    127.0.0.1:6379>




    getset
    设置key的值并返回旧的key值

    127.0.0.1:6379> get key5
    "lijie"
    127.0.0.1:6379> getset key5 haha
    "lijie"
    127.0.0.1:6379> get key5
    "haha"
    127.0.0.1:6379>



    getrange
    获取子字符串

    127.0.0.1:6379> get email
    "lijie@li-jie.mer.net"
    127.0.0.1:6379> getrange email 0 5 //获取email的value的0索引到5(包括5)索引的值
    "lijie@"
    127.0.0.1:6379>


    mget
    批量获取

    127.0.0.1:6379> mget key1 key2 key3 key4 key5 key 6
    1) "lijie1"
    2) "lijie2"
    3) "lambrother"
    4) "lijie@lambrother.net"
    5) "haha"
    6) (nil)
    7) (nil)
    127.0.0.1:6379>



    incr
    对key的值做加加操作,并返回新的值

    127.0.0.1:6379> set key6 30
    OK
    127.0.0.1:6379> get key6
    "30"
    127.0.0.1:6379> incr key6
    (integer) 31
    127.0.0.1:6379> incr key6
    (integer) 32
    127.0.0.1:6379> get key6
    "32"
    127.0.0.1:6379>


    incrby
    同incr类似,区别在于必须指定增量

    127.0.0.1:6379> get key6
    "37"
    127.0.0.1:6379> incrby key6 5
    (integer) 42
    127.0.0.1:6379> incrby key6 -8
    (integer) 34
    127.0.0.1:6379>


    decr
    对key的值做减减操作

    127.0.0.1:6379> decr key6
    (integer) 33
    127.0.0.1:6379> decr key6
    (integer) 32



    decrby
    与decr类似,指定减量

    127.0.0.1:6379> decrby key6 8
    (integer) 24
    127.0.0.1:6379> decrby key6 -7
    (integer) 31


    append
    给指定key的字符串追加value,返回新字符串的长度

    127.0.0.1:6379> get name
    "lambrother"
    127.0.0.1:6379> append name .net
    (integer) 14
    127.0.0.1:6379> get name
    "lambrother.net"



    strlen
    取指定key的value的长度

    127.0.0.1:6379> strlen name
    (integer) 14
  • 相关阅读:
    【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
    【POJ 2152】 Fire (树形DP)
    【POJ 1741】 Tree (树的点分治)
    【POJ 2486】 Apple Tree (树形DP)
    【HDU 3810】 Magina (01背包,优先队列优化,并查集)
    【SGU 390】Tickets (数位DP)
    【SPOJ 2319】 BIGSEQ
    【SPOJ 1182】 SORTBIT
    【HDU 5456】 Matches Puzzle Game (数位DP)
    【HDU 3652】 B-number (数位DP)
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/6566738.html
Copyright © 2011-2022 走看看