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"
posted @ 2016-12-06 15:46  cos1eqlg0  阅读(540)  评论(0编辑  收藏  举报