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"