02

    xiaoxiao2023-08-10  104

    

    Strings类型及操作

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

     

    Set

    设置Key对应的值为string类型的value.

    例如:我们添加一个name=lijie的键值对:

    127.0.0.1:6379> set name toto

    OK

     

    //获取name的值:

    127.0.0.1:6379> get name

    "toto"

     

    //再次重新设置name的值:

    127.0.0.1:6379> set name totobrother

    OK

    127.0.0.1:6379> get name

    "totobrother"

     

    setnx

    设置key对应的值为string类型的value,如果key已经存在,返回0nxnot exist的意思。

    也就是说,使用setnx来设置的时候,如果已经设置过了,返回0,取到的值是原来的值,没有设置过返回1

    127.0.0.1:6379> get name

    "totobrother"

    127.0.0.1:6379> setnx name totobrother

    (integer) 0

    127.0.0.1:6379> get name

    "totobrother"

    127.0.0.1:6379> set age 20

    OK

    127.0.0.1:6379> setnx age2 20

    (integer) 1

    127.0.0.1:6379> setnx age2 40

    (integer) 0

    127.0.0.1:6379> get age2

    "20"

     

    Setex

    设置key对应的值为string类型的value,并指定此键值对应的有效期。

    例如:我们添加一个haircolor=red的键值对,并指定有效期为10秒。

    [toto@localhost bin]$ ./redis-cli      启动服务端

    127.0.0.1:6379> setex haircolor 10 red    通过setex设置指定时间内的key value值有效

    OK

    127.0.0.1:6379> get haircolor           10秒内的时候有效

    "red"

    127.0.0.1:6379> get haircolor           10秒后无效了,10秒钟以后这个键会消失,可以重新对其设置。

    (nil)

    127.0.0.1:6379>                     setex当不指定时间的时候,表示永久有效。

    Setrange

    设置指定keyvalue值的字符串。

    例如:我们希望将lijie126邮箱替换为gmail邮箱。

    127.0.0.1:6379> set name lijie@126.com      设置name的值

    OK

    127.0.0.1:6379> get name                  获得name的值

    "lijie@126.com"

    127.0.0.1:6379> setrange name 6 gmail.com   这里的6表示字符所在的下标,表示从第几个下标开始替换。

    (integer) 15                              返回的是字符串的长度。

    127.0.0.1:6379> get name                  获得指定key的对应的值。

    "lijie@gmail.com"

    127.0.0.1:6379>

     

    mset  (批量设置)

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

    127.0.0.1:6379> mset key1 lijie1 key2 lijie2    批量设置key1key2

    OK

    127.0.0.1:6379> get key1

    "lijie1"

    127.0.0.1:6379> get key2

    "lijie2"

    127.0.0.1:6379>

     

    msetnx

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

    127.0.0.1:6379> get key2

    "lijie2"

    如果一个已经设置过,那么都设置不成功。如果有一个设置成功了,都设置不成功了

    127.0.0.1:6379> msetnx key4 lampbrother.net key5 lijie@lampbrother key2 toto

    (integer) 0

     

    只有都没有设置过的,才可以进行设置。

    127.0.0.1:6379> msetnx key4 lampbrother.net key5 lijie@lampbrother

    (integer) 1

    127.0.0.1:6379> get key4

    "lampbrother.net"

    127.0.0.1:6379> get key5

    "lijie@lampbrother"

    127.0.0.1:6379>

     

    get

    获取key对应的string值,如果key不存在返回nil

    getset :获取旧值,并设置新值。

        设置key的值,并返回key的旧值。

    127.0.0.1:6379> getset key6 30

    (nil)

    127.0.0.1:6379> get key6

    "30"

    127.0.0.1:6379>

     

    getrange

    获取keyvalue值的子字符串。

    127.0.0.1:6379> get key5

    "lijie@lampbrother"

    127.0.0.1:6379> getrange key5 3 10

    "ie@lampb"

    127.0.0.1:6379>

     

    mget (批量获取)

    一次获取多个key的值,如果对应key不存在,则对应返回nil.

    127.0.0.1:6379> mget key1 key2 key3 key4 key5 key6

    1) "lijie1"

    2) "lijie2"

    3) (nil)

    4) "lampbrother.net"

    5) "lijie@lampbrother"

    6) "30"

    127.0.0.1:6379>

     

    incr

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

    incrby

    incr类似,加指定值,key不存在时候会设置key,并认为原来的value0.

    127.0.0.1:6379> decr key6

    (integer) -1

    127.0.0.1:6379> decr key6

    (integer) -2

    127.0.0.1:6379> incr key6

    (integer) -1

    127.0.0.1:6379> incr key6

    (integer) 0

    127.0.0.1:6379> incrby key6 +5

    (integer) 5

    127.0.0.1:6379> incrby key +5

    (integer) 5

    127.0.0.1:6379> incrby key6 +5

    (integer) 10

    127.0.0.1:6379> get key6

    "10"

    127.0.0.1:6379>

     

    decr

    key的值做减减操作

    decrby

    decr类似,减指定值。

    127.0.0.1:6379>decr key6

    (integer)37

    127.0.0.1:6379>decr key6

    (integer)36

    127.0.0.1:6379>decrby key6 -3

    (integer)33

     

    append

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

    append name@li-jie.me

    127.0.0.1:6379> get name

    "totobrother"

    127.0.0.1:6379> append name @li-jie.me

    (integer) 21

    127.0.0.1:6379> get name

    "totobrother@li-jie.me"

    127.0.0.1:6379>

     

    strlen(查看字符串的长度)

    取指定keyvalue值的长度。

    127.0.0.1:6379> get name

    "totobrother@li-jie.me"

    127.0.0.1:6379> strlen name

    (integer) 21

    127.0.0.1:6379>

     

     

    hashes类型

    hashes类型及操作

    Redis hash是一个string类型的fieldvalue的映射表。它的添加、删除操作都是01)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成当个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

     

    hset(设置hash表)

    设置hash field为指定值,如果key不存在,则先创建。

    hset hash表名  key  value

    127.0.0.1:6379> hset myhash field1 hello

    (integer) 1

    127.0.0.1:6379> hset user:001 name lijie

    (integer) 1

    通过hget获得值,hget hash  名称

    127.0.0.1:6379> hget user:001 name

    "lijie"

    127.0.0.1:6379>

     

    hsetnx

    设置hash field为指定值,如果key不存在,则先创建。如果存在返回0.

    127.0.0.1:6379> hsetnx user:002 name lamp

    (integer) 1

    127.0.0.1:6379> hget user:002 name

    "lamp"

    127.0.0.1:6379> hsetnx user:002 name lampbrother  //如果已经存在,再设置时设置不成功

    (integer) 0

    127.0.0.1:6379> hget user:002 name

    "lamp"

    127.0.0.1:6379>

     

    hmset

    同时设置hash的多个field

    hmget:获取全部指定的hash field

    127.0.0.1:6379> hsetnx user:002 name lampbrother

    (integer) 0

    127.0.0.1:6379> hget user:002 name

    "lamp"

    127.0.0.1:6379> hmset user:003 name lijie age 20 sex 1

    OK

    127.0.0.1:6379> hget user:003 name

    "lijie"

    127.0.0.1:6379> hget user:003 age

    "20"

    127.0.0.1:6379> hget user:003 sex

    "1"

    127.0.0.1:6379> hmget user:003 name age sex

    1) "lijie"

    2) "20"

    3) "1"

    127.0.0.1:6379>

     

    hincrby

    指定的hash field加上给定值。对某一个键进行自增。

     

    hexists

    测试指定field是否存在。

    127.0.0.1:6379> hexists user:003 name

    (integer) 1              //如果指定字段存在,则返回1,否则返回0

     

    hlen

    返回指定hashfield数量。

    127.0.0.1:6379> hlen myhash

    (integer) 1

    127.0.0.1:6379> hlen user:001

    (integer) 1

    127.0.0.1:6379> hlen user:003

    (integer) 3

    127.0.0.1:6379>

     

    hdel

    删除指定hashfield字段

     

    hkeys:返回hash的所有field

    127.0.0.1:6379> hkeys user:003

    1) "name"

    2) "age"

    3) "sex"

    127.0.0.1:6379>

     

    hvals:返回hash的所有value.

    127.0.0.1:6379> hkeys user:003

    1) "name"

    2) "age"

    3) "sex"

    127.0.0.1:6379> hvals user:001

    1) "lijie"

    127.0.0.1:6379> hvals user:002

    1) "lamp"

    127.0.0.1:6379> hvals user:003

    1) "lijie"

    2) "20"

    3) "1"

    127.0.0.1:6379>

     

    hgetall

    获取某个hash中全部的fieldvalue.

    最新回复(0)