一、基本操作
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
""
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
""
127.0.0.1:6379> incr num1
(integer) 1
127.0.0.1:6379> get num1
""
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
""
127.0.0.1:6379> incrby num 10
(integer) 21
127.0.0.1:6379> get num
""
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
""
12、decr
对key对应的value做减减操作。
127.0.0.1:6379> get num2
""
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
""
127.0.0.1:6379> append qq @qq.com
(integer) 10
127.0.0.1:6379> get qq
"[email protected]"
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
""
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) ""
3) "member2"
4) ""
127.0.0.1:6379> zadd zsetkey 4 member3
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member1"
2) ""
3) "member2"
4) ""
5) "member3"
6) ""
127.0.0.1:6379> zadd zsetkey 2 member3
(integer) 0
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member1"
2) ""
3) "member3"
4) ""
5) "member2"
6) ""
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) ""
3) "member2"
4) ""
3、zincrby
在zset中的member对应的score增加指定值,如果不存在member,则进行创建。
127.0.0.1:6379> zincrby zsetkey 3 member1
""
127.0.0.1:6379> zincrby zsetkey 1 member4
""
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member4"
2) ""
3) "member2"
4) ""
5) "member1"
6) ""
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) ""
3) "member2"
4) ""
5) "member4"
6) ""
7、zrangebyscore
返回zset中score在给定区间的元素
127.0.0.1:6379> zrangebyscore zsetkey 1 3 withscores
1) "member4"
2) ""
3) "member2"
4) ""
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
""
127.0.0.1:6379> zscore zsetkey member4
""
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) ""
3) "member2"
4) ""
5) "member3"
6) ""
7) "member4"
8) ""
127.0.0.1:6379> zremrangebyrank zsetkey 1 2
(integer) 2
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member1"
2) ""
3) "member4"
4) ""
12、zremrangebyscore
删除score在给定区间的元素
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member1"
2) ""
3) "member2"
4) ""
5) "member3"
6) ""
7) "member4"
8) ""
127.0.0.1:6379> zremrangebyscore zsetkey 3 4
(integer) 2
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member1"
2) ""
3) "member2"
4) ""