zoukankan      html  css  js  c++  java
  • Redis学习笔记-数据操作篇(Centos7)

    一、基本操作

    1、插入数据

    127.0.0.1:6379> set name cos1eqlg0
    OK

      这样就在redis中设置了一个key-value键值对

    2、查询数据

    127.0.0.1:6379> get name
    "cos1eqlg0"

      取出对应key的value值

    3、删除键值

    127.0.0.1:6379> del name
    (integer) 1

      1代表删除成功1个key

    4、验证键是否存在

    127.0.0.1:6379> exists name
    (integer) 0

      0代表key不存在,1代表存在

    二、其它操作

    1、setnx

      如果key存在,返回0,nx是not exist的意思。

    127.0.0.1:6379> get name
    "cos1eqlg0"
    127.0.0.1:6379> setnx name cos1
    (integer) 0
    127.0.0.1:6379> get name
    "cos1eqlg0"

      因为原来存在key,所以修改不生效

    2、setex

      指定键值对应的有效期

    127.0.0.1:6379> setex port 15 6379
    OK
    127.0.0.1:6379> get port
    "6379"
    127.0.0.1:6379> get port
    (nil)

      15秒之后,已经取不到与key相应的value了。注意,命令“set name 6379 ex 15”也可以实现以上相同的功能

    3、setrange

      使用给定的字符串替换原字符串的子字符串。

    127.0.0.1:6379> get name
    "cos1eqlg0"
    127.0.0.1:6379> setrange name 6 log10(1)
    (integer) 14
    127.0.0.1:6379> get name
    "cos1eqlog10(1)"

      其中,6是指从下标为6的字符串开始替换

    4、mset

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

    127.0.0.1:6379> mset key1 value1 key2 value2
    OK
    127.0.0.1:6379> get key1
    "value1"
    127.0.0.1:6379> get key2
    "value2"

     5、msetnx

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

    127.0.0.1:6379> get key2
    "value2"
    127.0.0.1:6379> msetnx key2 valuuuu key3 vlaue3
    (integer) 0
    127.0.0.1:6379> get key2
    "value2"
    127.0.0.1:6379> get key3
    (nil)
    127.0.0.1:6379> msetnx key4 value4 key3 vlaue3
    (integer) 1
    127.0.0.1:6379> get key3
    "vlaue3"
    127.0.0.1:6379> get key4
    "value4"

    6、get

      获取Key对应的value,如果key不存在就返回nil。

      前面已经使用过,不再额外举例。

    7、getset

      设置key的值,并返回key的旧值。如果key值不存在,返回nil,但是设置会生效

    127.0.0.1:6379> getset key1 value1-1
    "value1"
    127.0.0.1:6379> get key1
    "value1-1"
    127.0.0.1:6379> getset key5 value5
    (nil)
    127.0.0.1:6379> get key5
    "value5"

    8、getrange

      获取指定key的value的子字符串

    127.0.0.1:6379> get name
    "cos1eqlog10(1)"
    127.0.0.1:6379> getrange name 0 5
    "cos1eq"
    127.0.0.1:6379> getrange name -8 -1
    "log10(1)"
    127.0.0.1:6379> getrange name 9 100
    "10(1)"

    9、mget

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

    127.0.0.1:6379> mget key1 key2 key3 key6
    1) "value1-1"
    2) "value2"
    3) "vlaue3"
    4) (nil)

    10、incr

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

    127.0.0.1:6379> set num 10
    OK
    127.0.0.1:6379> incr num
    (integer) 11
    127.0.0.1:6379> get num
    "11"
    127.0.0.1:6379> incr num1
    (integer) 1
    127.0.0.1:6379> get num1
    "1"
    127.0.0.1:6379> incr name
    (error) ERR value is not an integer or out of range

    11、incrby

      与incr相似,加指定值

    127.0.0.1:6379> get num
    "11"
    127.0.0.1:6379> incrby num 10
    (integer) 21
    127.0.0.1:6379> get num
    "21"
    127.0.0.1:6379> incrby num aa
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> get name
    "cos1eqlog10(1)"
    127.0.0.1:6379> incrby name 10
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> incrby num2 10
    (integer) 10
    127.0.0.1:6379> get num2
    "10"

    12、decr

      对key对应的value做减减操作。

    127.0.0.1:6379> get num2
    "10"
    127.0.0.1:6379> decr num
    (integer) 20
    127.0.0.1:6379> decr num3
    (integer) -1
    127.0.0.1:6379> decr name
    (error) ERR value is not an integer or out of range

    13、decrby

      减去指定值。

    127.0.0.1:6379> decrby num 5
    (integer) 15
    127.0.0.1:6379> decrby num4 5
    (integer) -5
    127.0.0.1:6379> decrby num aa
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> decrby name 5
    (error) ERR value is not an integer or out of range

      decrby完全是为了可读性,因为我们直接incrby一个负数就能达到同样的效果,反之一样。

    127.0.0.1:6379> incrby num -5
    (integer) 10
    127.0.0.1:6379> decrby num -5
    (integer) 15

    14、append

      向key对应的value添加指定字符串,返回字符串长度

    127.0.0.1:6379> get qq
    "147"
    127.0.0.1:6379> append qq @qq.com
    (integer) 10
    127.0.0.1:6379> get qq
    "147@qq.com"
    127.0.0.1:6379> append num ':type is int.'
    (integer) 15
    127.0.0.1:6379> get num
    "15:type is int."

    15、strlen

      获取key对应的value的长度。

    127.0.0.1:6379> get name
    "cos1eqlog10(1)"
    127.0.0.1:6379> strlen name
    (integer) 14
    127.0.0.1:6379> get num2
    "10"
    127.0.0.1:6379> strlen num2
    (integer) 2

    三、hash类型

     1、hset

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

    127.0.0.1:6379> hset hashkey field1 value1
    (integer) 1
    127.0.0.1:6379> hget hashkey field1
    "value1"

    2、hsetnx

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

    127.0.0.1:6379> hsetnx hashkey field2 'hello world!'
    (integer) 1
    127.0.0.1:6379> hget hashkey field2
    "hello world!"
    127.0.0.1:6379> hsetnx hashkey field2 'Hello'
    (integer) 0

    3、hmset

      同时设置hash的多个filed

    127.0.0.1:6379> hmset hashkey field1 valuenew1 field2 valuenew2
    OK

    4、hget

      获取指定的hash field.

    127.0.0.1:6379> hget hashkey field1
    "valuenew1"
    127.0.0.1:6379> hget hashkey field2
    "valuenew2"
    127.0.0.1:6379> hget hashkey field3
    (nil)

    5、hmget

      获取全部指定的hash field

    127.0.0.1:6379> hget hashkey field1
    "valuenew1"
    127.0.0.1:6379> hget hashkey field2
    "valuenew2"
    127.0.0.1:6379> hget hashkey field3
    (nil)

    6、hincrby

      指定的hash filed加上指定值。

    127.0.0.1:6379> hincrby hashkey field3 30
    (integer) 30
    127.0.0.1:6379> hincrby hashkey field3 -5
    (integer) 25
    127.0.0.1:6379> hincrby hashkey field3 10
    (integer) 35

    7、hexists

      判断指定的field是否存在

    127.0.0.1:6379> hexists hashkey field1
    (integer) 1
    127.0.0.1:6379> hexists hashkey field
    (integer) 0

    8、hlen

      返回指定hash的field数量。

    127.0.0.1:6379> hlen hashkey
    (integer) 3
    127.0.0.1:6379> hlen hashkey0
    (integer) 0

    9、hdel

      返回指定hash的field数量。

    127.0.0.1:6379> hlen hashkey
    (integer) 3
    127.0.0.1:6379> hdel hashkey field3
    (integer) 1
    127.0.0.1:6379> hlen hashkey
    (integer) 2

    10、hkeys

      返回hash所有的field

    127.0.0.1:6379> hkeys hashkey
    1) "field1"
    2) "field2"

    11、hvals

      返回hash所有的value

    127.0.0.1:6379> hvals hashkey
    1) "valuenew1"
    2) "valuenew2"

    12、hgetall

      获取某个hash中全部的field和value

    127.0.0.1:6379> hgetall hashkey
    1) "field1"
    2) "valuenew1"
    3) "field2"
    4) "valuenew2"

    三、list类型操作

       redis的list类型最大长度是(2**32),可以从头部或尾部添加删除元素,所以list类型既可以用作堆,也可以用作栈。

    1、lpush

      在key对应的list的头部添加字符串元素

    127.0.0.1:6379> lpush listkey value1
    (integer) 1
    127.0.0.1:6379> lpush listkey value2
    (integer) 2
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value2"
    2) "value1"

    2、rpush

      在key对应的list的尾部添加字符串元素

    127.0.0.1:6379> rpush listkey value3
    (integer) 3
    127.0.0.1:6379> rpush listkey value4
    (integer) 4
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value2"
    2) "value1"
    3) "value3"
    4) "value4"

    3、linsert

      在key对应的list的特定位置插入字符串

    127.0.0.1:6379> linsert listkey before value3 value5
    (integer) 5
    127.0.0.1:6379> linsert listkey after value2 value6
    (integer) 6
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value2"
    2) "value6"
    3) "value1"
    4) "value5"
    5) "value3"
    6) "value4"

    4、lset

      设置list中对应下标的元素为指定值(下标从零开始)

    127.0.0.1:6379> lset listkey 0 value7
    OK
    127.0.0.1:6379> lset listkey -3 value8
    OK
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value7"
    2) "value6"
    3) "value1"
    4) "value8"
    5) "value3"
    6) "value4"

    5、lrem

      从key对应list中删除指定个和value相同的元素

      如果删除个数大于零,按从头到尾的顺序删除。

    127.0.0.1:6379> lrange listkey 0 -1
    1) "value1"
    2) "value6"
    3) "value1"
    4) "value1"
    127.0.0.1:6379> lrem listkey 2 value1
    (integer) 2
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value6"
    2) "value1"

      如果删除个数小于零,按从尾到头的顺序删除。

    127.0.0.1:6379> lrange listkey 0 -1
    1) "value1"
    2) "value6"
    3) "value1"
    4) "value1"
    127.0.0.1:6379> lrem listkey -2 value1
    (integer) 2
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value1"
    2) "value6"

      如果删除个数等于零,则全部进行删除。

    127.0.0.1:6379> lrange listkey 0 -1
    1) "value1"
    2) "value1"
    3) "value6"
    4) "value1"
    127.0.0.1:6379> lrem listkey 0 value1
    (integer) 3
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value6"

    6、ltrim

      保留指定范围的数据(从零开始)

    127.0.0.1:6379> lrange listkey 0 -1
    1) "value1"
    2) "value2"
    3) "value3"
    4) "value4"
    5) "value5"
    6) "value6"
    127.0.0.1:6379> ltrim listkey 0 3
    OK
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value1"
    2) "value2"
    3) "value3"
    4) "value4"

    7、lpop

      从list头部删除元素,并返回删除的元素。

    127.0.0.1:6379> lpop listkey
    "value1"
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value2"
    2) "value3"
    3) "value4"

    8、rpop

      从list尾部删除元素,并返回删除的元素。

    127.0.0.1:6379> rpop listkey
    "value4"
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value2"
    2) "value3"

    9、rpoplpush

      移除第一个list的尾部元素并添加到第二个list的头部,最后返回被移除的元素。

    127.0.0.1:6379> lrange listkey 0 -1
    1) "value2"
    2) "value3"
    127.0.0.1:6379> lrange listkey1 0 -1
    1) "value10"
    2) "value11"
    3) "value12"
    127.0.0.1:6379> rpoplpush listkey listkey1
    "value3"
    127.0.0.1:6379> lrange listkey 0 -1
    1) "value2"
    127.0.0.1:6379> lrange listkey1 0 -1
    1) "value3"
    2) "value10"
    3) "value11"
    4) "value12"
    127.0.0.1:6379> rpoplpush listkey1 listkey2
    "value12"
    127.0.0.1:6379> lrange listkey1 0 -1
    1) "value3"
    2) "value10"
    3) "value11"
    127.0.0.1:6379> lrange listkey2 0 -1
    1) "value12"
    127.0.0.1:6379> rpoplpush listkey3 listkey2
    (nil)
    127.0.0.1:6379> lrange listkey2 0 -1
    1) "value12"
    127.0.0.1:6379> lrange listkey3 0 -1
    (empty list or set)

    10、lindex

      返回index位置的元素

    127.0.0.1:6379> lrange listkey1 0 -1
    1) "value3"
    2) "value10"
    3) "value11"
    127.0.0.1:6379> lindex listkey1 0
    "value3"
    127.0.0.1:6379> lindex listkey1 3
    (nil)

    11、llen

      返回key对应list的长度

    127.0.0.1:6379> llen listkey1
    (integer) 3

    四、set类型操作

      set就是集合,其中不会存在重复的成员。set类型是无序集合,最大可以有(2**32)个成员。

    1、sadd

      向key对应的set添加member。

    127.0.0.1:6379> sadd setkey member1
    (integer) 1
    127.0.0.1:6379> sadd setkey member2
    (integer) 1
    127.0.0.1:6379> sadd setkey member2
    (integer) 0
    127.0.0.1:6379> smembers setkey
    1) "member2"
    2) "member1"

    2、srem

      删除key对应set中的member

    127.0.0.1:6379> smembers setkey
    1) "member4"
    2) "member3"
    3) "member2"
    4) "member1"
    127.0.0.1:6379> srem setkey member3
    (integer) 1
    127.0.0.1:6379> srem setkey member5
    (integer) 0
    127.0.0.1:6379> smembers setkey
    1) "member4"
    2) "member2"
    3) "member1"
    127.0.0.1:6379> srem setkey member4 member1
    (integer) 2
    127.0.0.1:6379> smembers setkey
    1) "member2"

    3、spop

      随即返回并删除一个member

    127.0.0.1:6379> smembers setkey
    1) "member4"
    2) "member3"
    3) "member1"
    4) "member2"
    127.0.0.1:6379> spop setkey
    "member1"
    127.0.0.1:6379> smembers setkey
    1) "member4"
    2) "member3"
    3) "member2"
    127.0.0.1:6379> spop setkey 2
    1) "member3"
    2) "member2"
    127.0.0.1:6379> smembers setkey
    1) "member4"

    4、sdiff

      返回与第一个set的差集

    127.0.0.1:6379> smembers setkey
    1) "member4"
    2) "member3"
    3) "member2"
    4) "member1"
    127.0.0.1:6379> smembers setkey-1
    1) "member5"
    2) "member6"
    3) "member2"
    4) "member1"
    127.0.0.1:6379> sdiff setkey setkey-1
    1) "member4"
    2) "member3"
    127.0.0.1:6379> sdiff setkey-1 setkey
    1) "member5"
    2) "member6"

    5、sdiffstore

      返回与第二个set的差集,并将结果存为第一个set

    127.0.0.1:6379> smembers setkey
    1) "member4"
    2) "member3"
    3) "member1"
    4) "member2"
    127.0.0.1:6379> smembers setkey-1
    1) "member5"
    2) "member6"
    3) "member2"
    4) "member1"
    127.0.0.1:6379> smembers setkey-2
    1) "member6"
    2) "members1"
    3) "member1"
    127.0.0.1:6379> sdiffstore setkey-2 setkey setkey-1
    (integer) 2
    127.0.0.1:6379> smembers setkey-2
    1) "member4"
    2) "member3"

    6、sinter

      返回所有set的交集

    127.0.0.1:6379> sinter setkey setkey-1
    1) "member1"
    2) "member2"

    7、sinterstore

      返回除第一个key对应的set之外的所有set的交集,并将结果存为第一个set

    127.0.0.1:6379> smembers setkey-2
    1) "member5"
    2) "member4"
    3) "member6"
    4) "member3"
    127.0.0.1:6379> sinterstore setkey-2 setkey setkey-1
    (integer) 2
    127.0.0.1:6379> smembers setkey-2
    1) "member1"
    2) "member2"

    8、sunion

      返回所有set的并集

    127.0.0.1:6379> sunion setkey setkey-1
    1) "member4"
    2) "member5"
    3) "member3"
    4) "member2"
    5) "member1"
    6) "member6"

    9、sunionstore

      返回除第一个key对应的set之外的所有set的并集,并将结果存为第一个set

    127.0.0.1:6379> smembers setkey-2
    1) "member1"
    2) "member2"
    127.0.0.1:6379> sunionstore setkey-2 setkey setkey-1
    (integer) 6
    127.0.0.1:6379> smembers setkey-2
    1) "member4"
    2) "member5"
    3) "member3"
    4) "member2"
    5) "member1"
    6) "member6"

    10、smove

      从第一个set移除member添加到第二个set

    127.0.0.1:6379> smembers setkey-2
    1) "member1"
    2) "member2"
    127.0.0.1:6379> sunionstore setkey-2 setkey setkey-1
    (integer) 6
    127.0.0.1:6379> smembers setkey-2
    1) "member4"
    2) "member5"
    3) "member3"
    4) "member2"
    5) "member1"
    6) "member6"

    11、scard

      返回set的member个数

    127.0.0.1:6379> scard setkey
    (integer) 3
    127.0.0.1:6379> scard setkey-1
    (integer) 5

    12、sismember

      测试member是否是set的元素

    127.0.0.1:6379> sismember setkey member2
    (integer) 1
    127.0.0.1:6379> sismember setkey member12
    (integer) 0

    13、srandmember

      随机返回set中的member,但不删除

    127.0.0.1:6379> srandmember setkey
    "member1"
    127.0.0.1:6379> srandmember setkey 7
    1) "member4"
    2) "member1"
    3) "member2"
    127.0.0.1:6379> srandmember setkey 2
    1) "member1"
    2) "member2"
    127.0.0.1:6379> srandmember setkey 2
    1) "member4"
    2) "member2"
    127.0.0.1:6379> srandmember setkey 2
    1) "member4"
    2) "member1"

     五、sorted set类型操作

      sorted sets是set一个升级版本,在set的基础上增加了一个顺序的属性。

    1、zadd

      向zset添加member,score.score用于排序。如果member存在,则根据score更新元素的顺序

    127.0.0.1:6379> zadd zsetkey 1 member1
    (integer) 1
    127.0.0.1:6379> zadd zsetkey 3 member2
    (integer) 1
    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member2"
    4) "3"
    127.0.0.1:6379> zadd zsetkey 4 member3
    (integer) 1
    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member2"
    4) "3"
    5) "member3"
    6) "4"
    127.0.0.1:6379> zadd zsetkey 2 member3
    (integer) 0
    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member3"
    4) "2"
    5) "member2"
    6) "3"

    2、zrem

      删除zset中的member

    127.0.0.1:6379> zrem zsetkey member3
    (integer) 1
    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member2"
    4) "3"

    3、zincrby

      在zset中的member对应的score增加指定值,如果不存在member,则进行创建。

    127.0.0.1:6379> zincrby zsetkey 3 member1
    "4" 
    127.0.0.1:6379> zincrby zsetkey 1 member4
    "1"
    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member4"
    2) "1"
    3) "member2"
    4) "3"
    5) "member1"
    6) "4"

    4、zrank

      返回zset中member的位置(按score从小到大),即member的index(从零开始)

    127.0.0.1:6379> zrank zsetkey member1
    (integer) 2

      member1是zsetkey中的第二个元素。

    5、zrevrank

      返回zset中member的位置(按score从大到小),即member的index(从零开始)

    127.0.0.1:6379> zrevrank zsetkey member1
    (integer) 0

      按照score从大到小排列的话member1是zsetkey中的第0个元素

    6、zrevrange

      放回zset(按score从大到小)中的所有元素

    127.0.0.1:6379> zrevrange zsetkey 0 -1 withscores
    1) "member1"
    2) "4"
    3) "member2"
    4) "3"
    5) "member4"
    6) "1"

    7、zrangebyscore

      返回zset中score在给定区间的元素

    127.0.0.1:6379> zrangebyscore zsetkey 1 3 withscores
    1) "member4"
    2) "1"
    3) "member2"
    4) "3"

     8、zcount

      返回zset中score在给定区间的数量

    127.0.0.1:6379> zcount zsetkey 1 3
    (integer) 2

    9、zcard

      返回zset中member的个数

    127.0.0.1:6379> zcard zsetkey
    (integer) 3

    10、zscore

      返回给定member对应的score

    127.0.0.1:6379> zscore zsetkey member2
    "3"
    127.0.0.1:6379> zscore zsetkey member4
    "1"
    127.0.0.1:6379> zscore zsetkey member5
    (nil)

    11、zremrangebyrank

      删除集合中index在给定区间的元素

    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member2"
    4) "2"
    5) "member3"
    6) "3"
    7) "member4"
    8) "4"
    127.0.0.1:6379> zremrangebyrank zsetkey 1 2
    (integer) 2
    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member4"
    4) "4"

    12、zremrangebyscore

      删除score在给定区间的元素

    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member2"
    4) "2"
    5) "member3"
    6) "3"
    7) "member4"
    8) "4"
    127.0.0.1:6379> zremrangebyscore zsetkey 3 4
    (integer) 2
    127.0.0.1:6379> zrange zsetkey 0 -1 withscores
    1) "member1"
    2) "1"
    3) "member2"
    4) "2"
  • 相关阅读:
    Python爬取暴走漫画动态图
    ADB server didn't ACK 的解决方法
    安装APK时报Local path doesn't exist错误
    当Web Services遇到Android(初步接触时可能遇到的错误)
    eclipse启动时出现Incompatible JVM Version [###] of the JVM is not suitable for this product ...
    两个Activity之间的切换和响应
    关于不同Android手机适配的几个问题(转)
    ERROR: Unknown command 'crunch' 解决方法
    eclipse无法启动的常见原因
    获取手机屏幕的宽和高
  • 原文地址:https://www.cnblogs.com/cdinc/p/6126325.html
Copyright © 2011-2022 走看看