可以直接看每一大节的命令示例部分,敲一遍就大体会了
此后按照如下的排版进行讲解:
[命令原型]* [时间复杂度] [命令描述]* 返回值
[命令原型]
* [时间复杂度] [命令描述]
* 返回值
/> redis-cli #执行Redis客户端工具。redis 127.0.0.1:6379> exists mykey #判断该键是否存在,存在返回1,否则返回0。(integer) 0redis 127.0.0.1:6379> append mykey "hello" #该键并不存在,因此append命令返回当前Value的长度。(integer) 5redis 127.0.0.1:6379> append mykey " world" #该键已经存在,因此返回追加后Value的长度。(integer) 11redis 127.0.0.1:6379> get mykey #通过get命令获取该键,以判断append的结果。"hello world"redis 127.0.0.1:6379> set mykey "this is a test" #通过set命令为键设置新值,并覆盖原有值。OKredis 127.0.0.1:6379> get mykey"this is a test"redis 127.0.0.1:6379> strlen mykey #获取指定Key的字符长度,等效于C库中strlen函数。(integer) 14
/> redis-cli #执行Redis客户端工具。
redis 127.0.0.1:6379> exists mykey #判断该键是否存在,存在返回1,否则返回0。
(integer) 0
redis 127.0.0.1:6379> append mykey "hello" #该键并不存在,因此append命令返回当前Value的长度。
(integer) 5
redis 127.0.0.1:6379> append mykey " world" #该键已经存在,因此返回追加后Value的长度。
(integer) 11
redis 127.0.0.1:6379> get mykey #通过get命令获取该键,以判断append的结果。
"hello world"
redis 127.0.0.1:6379> set mykey "this is a test" #通过set命令为键设置新值,并覆盖原有值。
OK
redis 127.0.0.1:6379> get mykey
"this is a test"
redis 127.0.0.1:6379> strlen mykey #获取指定Key的字符长度,等效于C库中strlen函数。
(integer) 14
redis 127.0.0.1:6379> set mykey 20 #设置Key的值为20OKredis 127.0.0.1:6379> incr mykey #该Key的值递增1(integer) 21redis 127.0.0.1:6379> decr mykey #该Key的值递减1(integer) 20redis 127.0.0.1:6379> del mykey #删除已有键。(integer) 1redis 127.0.0.1:6379> decr mykey #对空值执行递减操作,其原值被设定为0,递减后的值为-1(integer) -1redis 127.0.0.1:6379> del mykey (integer) 1redis 127.0.0.1:6379> incr mykey #对空值执行递增操作,其原值被设定为0,递增后的值为1(integer) 1redis 127.0.0.1:6379> set mykey hello #将该键的Value设置为不能转换为整型的普通字符串。OKredis 127.0.0.1:6379> incr mykey #在该键上再次执行递增操作时,Redis将报告错误信息。(error) ERR value is not an integer or out of rangeredis 127.0.0.1:6379> set mykey 10OKredis 127.0.0.1:6379> decrby mykey 5 (integer) 5redis 127.0.0.1:6379> incrby mykey 10(integer) 15
redis 127.0.0.1:6379> set mykey 20 #设置Key的值为20
redis 127.0.0.1:6379> incr mykey #该Key的值递增1
(integer) 21
redis 127.0.0.1:6379> decr mykey #该Key的值递减1
(integer) 20
redis 127.0.0.1:6379> del mykey #删除已有键。
(integer) 1
redis 127.0.0.1:6379> decr mykey #对空值执行递减操作,其原值被设定为0,递减后的值为-1
(integer) -1
redis 127.0.0.1:6379> del mykey
redis 127.0.0.1:6379> incr mykey #对空值执行递增操作,其原值被设定为0,递增后的值为1
redis 127.0.0.1:6379> set mykey hello #将该键的Value设置为不能转换为整型的普通字符串。
redis 127.0.0.1:6379> incr mykey #在该键上再次执行递增操作时,Redis将报告错误信息。
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379> set mykey 10
redis 127.0.0.1:6379> decrby mykey 5
redis 127.0.0.1:6379> incrby mykey 10
(integer) 15
redis 127.0.0.1:6379> incr mycounter #将计数器的值原子性的递增1(integer) 1#在获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成。redis 127.0.0.1:6379> getset mycounter 0 "1"redis 127.0.0.1:6379> get mycounter #查看设置后的结果。"0"
redis 127.0.0.1:6379> incr mycounter #将计数器的值原子性的递增1
#在获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成。
redis 127.0.0.1:6379> getset mycounter 0
"1"
redis 127.0.0.1:6379> get mycounter #查看设置后的结果。
"0"
redis 127.0.0.1:6379> setex mykey 10 "hello" #设置指定Key的过期时间为10秒。OK #通过ttl命令查看一下指定Key的剩余存活时间(秒数),0表示已经过期,-1表示永不过期。redis 127.0.0.1:6379> ttl mykey (integer) 4redis 127.0.0.1:6379> get mykey #在该键的存活期内我们仍然可以获取到它的Value。"hello"redis 127.0.0.1:6379> ttl mykey #该ttl命令的返回值显示,该Key已经过期。(integer) 0redis 127.0.0.1:6379> get mykey #获取已过期的Key将返回nil。(nil)
redis 127.0.0.1:6379> setex mykey 10 "hello" #设置指定Key的过期时间为10秒。
#通过ttl命令查看一下指定Key的剩余存活时间(秒数),0表示已经过期,-1表示永不过期。
redis 127.0.0.1:6379> ttl mykey
(integer) 4
redis 127.0.0.1:6379> get mykey #在该键的存活期内我们仍然可以获取到它的Value。
"hello"
redis 127.0.0.1:6379> ttl mykey #该ttl命令的返回值显示,该Key已经过期。
redis 127.0.0.1:6379> get mykey #获取已过期的Key将返回nil。
(nil)
redis 127.0.0.1:6379> del mykey #删除该键,以便于下面的测试验证。(integer) 1redis 127.0.0.1:6379> setnx mykey "hello" #该键并不存在,因此该命令执行成功。(integer) 1redis 127.0.0.1:6379> setnx mykey "world" #该键已经存在,因此本次设置没有产生任何效果。(integer) 0redis 127.0.0.1:6379> get mykey #从结果可以看出,返回的值仍为第一次设置的值。"hello"
redis 127.0.0.1:6379> del mykey #删除该键,以便于下面的测试验证。
redis 127.0.0.1:6379> setnx mykey "hello" #该键并不存在,因此该命令执行成功。
redis 127.0.0.1:6379> setnx mykey "world" #该键已经存在,因此本次设置没有产生任何效果。
redis 127.0.0.1:6379> get mykey #从结果可以看出,返回的值仍为第一次设置的值。
redis 127.0.0.1:6379> set mykey "hello world" #设定初始值。OKredis 127.0.0.1:6379> setrange mykey 6 dd #从第六个字节开始替换2个字节(dd只有2个字节)(integer) 11redis 127.0.0.1:6379> get mykey #查看替换后的值。"hello ddrld"redis 127.0.0.1:6379> setrange mykey 20 dd #offset已经超过该Key原有值的长度了,该命令将会在末尾补0。(integer) 22redis 127.0.0.1:6379> get mykey #查看补0后替换的结果。"hello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"redis 127.0.0.1:6379> del mykey #删除该Key。(integer) 1redis 127.0.0.1:6379> setrange mykey 2 dd #替换空值。(integer) 4redis 127.0.0.1:6379> get mykey #查看替换空值后的结果。"\x00\x00dd" redis 127.0.0.1:6379> set mykey "0123456789" #设置新值。OKredis 127.0.0.1:6379> getrange mykey 1 2 #截取该键的Value,从第一个字节开始,到第二个字节结束。"12"redis 127.0.0.1:6379> getrange mykey 1 20 #20已经超过Value的总长度,因此将截取第一个字节后面的所有字节。"123456789"
redis 127.0.0.1:6379> set mykey "hello world" #设定初始值。
redis 127.0.0.1:6379> setrange mykey 6 dd #从第六个字节开始替换2个字节(dd只有2个字节)
redis 127.0.0.1:6379> get mykey #查看替换后的值。
"hello ddrld"
redis 127.0.0.1:6379> setrange mykey 20 dd #offset已经超过该Key原有值的长度了,该命令将会在末尾补0。
(integer) 22
redis 127.0.0.1:6379> get mykey #查看补0后替换的结果。
"hello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"
redis 127.0.0.1:6379> del mykey #删除该Key。
redis 127.0.0.1:6379> setrange mykey 2 dd #替换空值。
redis 127.0.0.1:6379> get mykey #查看替换空值后的结果。
"\x00\x00dd"
redis 127.0.0.1:6379> set mykey "0123456789" #设置新值。
redis 127.0.0.1:6379> getrange mykey 1 2 #截取该键的Value,从第一个字节开始,到第二个字节结束。
"12"
redis 127.0.0.1:6379> getrange mykey 1 20 #20已经超过Value的总长度,因此将截取第一个字节后面的所有字节。
"123456789"
redis 127.0.0.1:6379> del mykey(integer) 1redis 127.0.0.1:6379> setbit mykey 7 1 #设置从0开始计算的第七位BIT值为1,返回原有BIT值0(integer) 0redis 127.0.0.1:6379> get mykey #获取设置的结果,二进制的0000 0001的十六进制值为0x01"\x01"redis 127.0.0.1:6379> setbit mykey 6 1 #设置从0开始计算的第六位BIT值为1,返回原有BIT值0(integer) 0redis 127.0.0.1:6379> get mykey #获取设置的结果,二进制的0000 0011的十六进制值为0x03"\x03"redis 127.0.0.1:6379> getbit mykey 6 #返回了指定Offset的BIT值。(integer) 1redis 127.0.0.1:6379> getbit mykey 10 #Offset已经超出了value的长度,因此返回0。(integer) 0
redis 127.0.0.1:6379> setbit mykey 7 1 #设置从0开始计算的第七位BIT值为1,返回原有BIT值0
redis 127.0.0.1:6379> get mykey #获取设置的结果,二进制的0000 0001的十六进制值为0x01
"\x01"
redis 127.0.0.1:6379> setbit mykey 6 1 #设置从0开始计算的第六位BIT值为1,返回原有BIT值0
redis 127.0.0.1:6379> get mykey #获取设置的结果,二进制的0000 0011的十六进制值为0x03
"\x03"
redis 127.0.0.1:6379> getbit mykey 6 #返回了指定Offset的BIT值。
redis 127.0.0.1:6379> getbit mykey 10 #Offset已经超出了value的长度,因此返回0。
redis 127.0.0.1:6379> mset key1 "hello" key2 "world" #批量设置了key1和key2两个键。OKredis 127.0.0.1:6379> mget key1 key2 #批量获取了key1和key2两个键的值。1) "hello"2) "world"#批量设置了key3和key4两个键,因为之前他们并不存在,所以该命令执行成功并返回1。redis 127.0.0.1:6379> msetnx key3 "study" key4 "zhang" (integer) 1redis 127.0.0.1:6379> mget key3 key4 1) "study"2) "zhang"#批量设置了key3和key5两个键,但是key3已经存在,所以该命令执行失败并返回0。redis 127.0.0.1:6379> msetnx key3 "hello" key5 "world" (integer) 0#批量获取key3和key5,由于key5没有设置成功,所以返回nil。redis 127.0.0.1:6379> mget key3 key5 1) "study"2) (nil)
redis 127.0.0.1:6379> mset key1 "hello" key2 "world" #批量设置了key1和key2两个键。
redis 127.0.0.1:6379> mget key1 key2 #批量获取了key1和key2两个键的值。
1) "hello"
2) "world"
#批量设置了key3和key4两个键,因为之前他们并不存在,所以该命令执行成功并返回1。
redis 127.0.0.1:6379> msetnx key3 "study" key4 "zhang"
redis 127.0.0.1:6379> mget key3 key4
1) "study"
2) "zhang"
#批量设置了key3和key5两个键,但是key3已经存在,所以该命令执行失败并返回0。
redis 127.0.0.1:6379> msetnx key3 "hello" key5 "world"
#批量获取key3和key5,由于key5没有设置成功,所以返回nil。
redis 127.0.0.1:6379> mget key3 key5
2) (nil)
/> redis-cli ## 在Shell提示符下启动redis客户端工具。redis 127.0.0.1:6379> del mykey(integer) 1## mykey键并不存在,该命令会创建该键及与其关联的List,## 之后在将参数中的values从左到右依次插入。redis 127.0.0.1:6379> lpush mykey a b c d(integer) 4## 取从位置0开始到位置2结束的3个元素。redis 127.0.0.1:6379> lrange mykey 0 21) "d"2) "c"3) "b"## 取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。redis 127.0.0.1:6379> lrange mykey 0 -11) "d"2) "c"3) "b"4) "a"## mykey2键此时并不存在,因此该命令将不会进行任何操作,其返回值为0。redis 127.0.0.1:6379> lpushx mykey2 e(integer) 0## 可以看到mykey2没有关联任何List Value。redis 127.0.0.1:6379> lrange mykey2 0 -1(empty list or set)## mykey键此时已经存在,所以该命令插入成功,并返回链表中当前元素的数量。redis 127.0.0.1:6379> lpushx mykey e(integer) 5## 获取该键的List Value的头部元素。redis 127.0.0.1:6379> lrange mykey 0 01) "e"
/> redis-cli ## 在Shell提示符下启动redis客户端工具。
## mykey键并不存在,该命令会创建该键及与其关联的List,
## 之后在将参数中的values从左到右依次插入。
redis 127.0.0.1:6379> lpush mykey a b c d
## 取从位置0开始到位置2结束的3个元素。
redis 127.0.0.1:6379> lrange mykey 0 2
1) "d"
2) "c"
3) "b"
## 取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。
redis 127.0.0.1:6379> lrange mykey 0 -1
4) "a"
## mykey2键此时并不存在,因此该命令将不会进行任何操作,其返回值为0。
redis 127.0.0.1:6379> lpushx mykey2 e
## 可以看到mykey2没有关联任何List Value。
redis 127.0.0.1:6379> lrange mykey2 0 -1
(empty list or set)
## mykey键此时已经存在,所以该命令插入成功,并返回链表中当前元素的数量。
redis 127.0.0.1:6379> lpushx mykey e
## 获取该键的List Value的头部元素。
redis 127.0.0.1:6379> lrange mykey 0 0
1) "e"
redis 127.0.0.1:6379> lpush mykey a b c d(integer) 4redis 127.0.0.1:6379> lpop mykey"d"redis 127.0.0.1:6379> lpop mykey"c"## 在执行lpop命令两次后,链表头部的两个元素已经被弹出,## 此时链表中元素的数量是2redis 127.0.0.1:6379> llen mykey(integer) 2
redis 127.0.0.1:6379> lpop mykey
"d"
"c"
## 在执行lpop命令两次后,链表头部的两个元素已经被弹出,
## 此时链表中元素的数量是2
redis 127.0.0.1:6379> llen mykey
(integer) 2
## 为后面的示例准备测试数据。redis 127.0.0.1:6379> lpush mykey a b c d a c(integer) 6## 从头部(left)向尾部(right)变量链表,## 删除2个值等于a的元素,返回值为实际删除的数量。redis 127.0.0.1:6379> lrem mykey 2 a(integer) 2## 看出删除后链表中的全部元素。redis 127.0.0.1:6379> lrange mykey 0 -11) "c"2) "d"3) "c"4) "b"## 获取索引值为1(头部的第二个元素)的元素值。redis 127.0.0.1:6379> lindex mykey 1"d"## 将索引值为1(头部的第二个元素)的元素值设置为新值e。redis 127.0.0.1:6379> lset mykey 1 eOK## 查看是否设置成功。redis 127.0.0.1:6379> lindex mykey 1"e"## 索引值6超过了链表中元素的数量,该命令返回nil。redis 127.0.0.1:6379> lindex mykey 6(nil)## 设置的索引值6超过了链表中元素的数量,设置失败,该命令返回错误信息。redis 127.0.0.1:6379> lset mykey 6 hh(error) ERR index out of range## 仅保留索引值0到2之间的3个元素,注意第0个和第2个元素均被保留。redis 127.0.0.1:6379> ltrim mykey 0 2OK## 查看trim后的结果。redis 127.0.0.1:6379> lrange mykey 0 -11) "c"2) "e"3) "c"
## 为后面的示例准备测试数据。
redis 127.0.0.1:6379> lpush mykey a b c d a c
(integer) 6
## 从头部(left)向尾部(right)变量链表,
## 删除2个值等于a的元素,返回值为实际删除的数量。
redis 127.0.0.1:6379> lrem mykey 2 a
## 看出删除后链表中的全部元素。
1) "c"
2) "d"
3) "c"
4) "b"
## 获取索引值为1(头部的第二个元素)的元素值。
redis 127.0.0.1:6379> lindex mykey 1
## 将索引值为1(头部的第二个元素)的元素值设置为新值e。
redis 127.0.0.1:6379> lset mykey 1 e
## 查看是否设置成功。
"e"
## 索引值6超过了链表中元素的数量,该命令返回nil。
redis 127.0.0.1:6379> lindex mykey 6
## 设置的索引值6超过了链表中元素的数量,设置失败,该命令返回错误信息。
redis 127.0.0.1:6379> lset mykey 6 hh
(error) ERR index out of range
## 仅保留索引值0到2之间的3个元素,注意第0个和第2个元素均被保留。
redis 127.0.0.1:6379> ltrim mykey 0 2
## 查看trim后的结果。
2) "e"
##删除该键便于后面的测试。redis 127.0.0.1:6379> del mykey(integer) 1##为后面的示例准备测试数据。redis 127.0.0.1:6379> lpush mykey a b c d e(integer) 5##在a的前面插入新元素a1。redis 127.0.0.1:6379> linsert mykey before a a1(integer) 6##查看是否插入成功,从结果看已经插入。注意lindex的index值是0-based。redis 127.0.0.1:6379> lindex mykey 0"e"##在e的后面插入新元素e2,从返回结果看已经插入成功。redis 127.0.0.1:6379> linsert mykey after e e2(integer) 7##再次查看是否插入成功。redis 127.0.0.1:6379> lindex mykey 1"e2"##在不存在的元素之前或之后插入新元素,该命令操作失败,并返回-1。redis 127.0.0.1:6379> linsert mykey after k a(integer) -1##为不存在的Key插入新元素,该命令操作失败,返回0。redis 127.0.0.1:6379> linsert mykey1 after a a2(integer) 0
##删除该键便于后面的测试。
##为后面的示例准备测试数据。
redis 127.0.0.1:6379> lpush mykey a b c d e
##在a的前面插入新元素a1。
redis 127.0.0.1:6379> linsert mykey before a a1
##查看是否插入成功,从结果看已经插入。注意lindex的index值是0-based。
redis 127.0.0.1:6379> lindex mykey 0
##在e的后面插入新元素e2,从返回结果看已经插入成功。
redis 127.0.0.1:6379> linsert mykey after e e2
(integer) 7
##再次查看是否插入成功。
"e2"
##在不存在的元素之前或之后插入新元素,该命令操作失败,并返回-1。
redis 127.0.0.1:6379> linsert mykey after k a
##为不存在的Key插入新元素,该命令操作失败,返回0。
redis 127.0.0.1:6379> linsert mykey1 after a a2
##删除该键,以便于后面的测试。redis 127.0.0.1:6379> del mykey(integer) 1##从链表的尾部插入参数中给出的values,插入顺序是从左到右依次插入。redis 127.0.0.1:6379> rpush mykey a b c d(integer) 4##通过lrange的可以获悉rpush在插入多值时的插入顺序。redis 127.0.0.1:6379> lrange mykey 0 -11) "a"2) "b"3) "c"4) "d"##该键已经存在并且包含4个元素,rpushx命令将执行成功,##并将元素e插入到链表的尾部。redis 127.0.0.1:6379> rpushx mykey e(integer) 5## 通过lindex命令可以看出之前的rpushx命令确实执行成功## 因为索引值为4的元素已经是新元素了。redis 127.0.0.1:6379> lindex mykey 4"e"##由于mykey2键并不存在,因此该命令不会插入数据,其返回值为0。redis 127.0.0.1:6379> rpushx mykey2 e(integer) 0##在执行rpoplpush命令前,先看一下mykey中链表的元素有哪些,##注意他们的位置关系。redis 127.0.0.1:6379> lrange mykey 0 -11) "a"2) "b"3) "c"4) "d"5) "e"##将mykey的尾部元素e弹出,同时再插入到mykey2的头部(原子性的完成这两步操作)。redis 127.0.0.1:6379> rpoplpush mykey mykey2"e"##通过lrange命令查看mykey在弹出尾部元素后的结果。redis 127.0.0.1:6379> lrange mykey 0 -11) "a"2) "b"3) "c"4) "d"##通过lrange命令查看mykey2在插入元素后的结果。redis 127.0.0.1:6379> lrange mykey2 0 -11) "e"##将source和destination设为同一键,将mykey中的尾部元素移到其头部。redis 127.0.0.1:6379> rpoplpush mykey mykey"d"##查看移动结果。redis 127.0.0.1:6379> lrange mykey 0 -11) "d"2) "a"3) "b"4) "c"
##删除该键,以便于后面的测试。
##从链表的尾部插入参数中给出的values,插入顺序是从左到右依次插入。
redis 127.0.0.1:6379> rpush mykey a b c d
##通过lrange的可以获悉rpush在插入多值时的插入顺序。
1) "a"
2) "b"
4) "d"
##该键已经存在并且包含4个元素,rpushx命令将执行成功,
##并将元素e插入到链表的尾部。
redis 127.0.0.1:6379> rpushx mykey e
## 通过lindex命令可以看出之前的rpushx命令确实执行成功
## 因为索引值为4的元素已经是新元素了。
redis 127.0.0.1:6379> lindex mykey 4
##由于mykey2键并不存在,因此该命令不会插入数据,其返回值为0。
redis 127.0.0.1:6379> rpushx mykey2 e
##在执行rpoplpush命令前,先看一下mykey中链表的元素有哪些,
##注意他们的位置关系。
5) "e"
##将mykey的尾部元素e弹出,同时再插入到mykey2的头部(原子性的完成这两步操作)。
redis 127.0.0.1:6379> rpoplpush mykey mykey2
##通过lrange命令查看mykey在弹出尾部元素后的结果。
##通过lrange命令查看mykey2在插入元素后的结果。
##将source和destination设为同一键,将mykey中的尾部元素移到其头部。
redis 127.0.0.1:6379> rpoplpush mykey mykey
##查看移动结果。
2) "a"
4) "c"
HSET key field value
HGET key field
HEXISTS key field
HLEN key
HDEL key field [field ...] O(N) 时间复杂度中的N表示参数中待删除的字段数量。从指定Key的Hashes Value中删除参数中指定的多个字段,如果不存在的字段将被忽略。如果Key不存在,则将其视为空Hashes,并返回0.
HSETNX key field value
HINCRBY key field increment
HGETALL key
HKEYS key
HVALS key
HMGET key field [field ...]
HMSET key field value [field value ...] * O(N) 时间复杂度中的N表示被设置的Field数量。逐对依次设置参数中给出的Field/Value对。如果其中某个Field已经存在,则用新值覆盖原有值。如果Key不存在,则创建新Key,同时设定参数中的Field/Value。
## 在Shell命令行启动Redis客户端程序/> redis-cli## 给键值为myhash的键设置字段为field1,值为study。redis 127.0.0.1:6379> hset myhash field1 "study"(integer) 1## 获取键值为myhash,字段为field1的值。redis 127.0.0.1:6379> hget myhash field1"study"## myhash键中不存在field2字段,因此返回nil。redis 127.0.0.1:6379> hget myhash field2(nil)## 给myhash关联的Hashes值添加一个新的字段field2,其值为zhang。redis 127.0.0.1:6379> hset myhash field2 "zhang"(integer) 1## 获取myhash键的字段数量。redis 127.0.0.1:6379> hlen myhash(integer) 2## 判断myhash键中是否存在字段名为field1的字段,由于存在,返回值为1。redis 127.0.0.1:6379> hexists myhash field1(integer) 1## 删除myhash键中字段名为field1的字段,删除成功返回1。redis 127.0.0.1:6379> hdel myhash field1(integer) 1## 再次删除myhash键中字段名为field1的字段,## 由于上一条命令已经将其删除,因为没有删除,返回0。redis 127.0.0.1:6379> hdel myhash field1(integer) 0## 判断myhash键中是否存在field1字段,由于上一条命令已经将其删除,因为返回0。redis 127.0.0.1:6379> hexists myhash field1(integer) 0## 通过hsetnx命令给myhash添加新字段field1,## 其值为zhang,因为该字段已经被删除,所以该命令添加成功并返回1。redis 127.0.0.1:6379> hsetnx myhash field1 study(integer) 1## 由于myhash的field1字段已经通过上一条命令添加成功,## 因为本条命令不做任何操作后返回0。redis 127.0.0.1:6379> hsetnx myhash field1 study(integer) 0
## 在Shell命令行启动Redis客户端程序
/> redis-cli
## 给键值为myhash的键设置字段为field1,值为study。
redis 127.0.0.1:6379> hset myhash field1 "study"
## 获取键值为myhash,字段为field1的值。
redis 127.0.0.1:6379> hget myhash field1
"study"
## myhash键中不存在field2字段,因此返回nil。
redis 127.0.0.1:6379> hget myhash field2
## 给myhash关联的Hashes值添加一个新的字段field2,其值为zhang。
redis 127.0.0.1:6379> hset myhash field2 "zhang"
## 获取myhash键的字段数量。
redis 127.0.0.1:6379> hlen myhash
## 判断myhash键中是否存在字段名为field1的字段,由于存在,返回值为1。
redis 127.0.0.1:6379> hexists myhash field1
## 删除myhash键中字段名为field1的字段,删除成功返回1。
redis 127.0.0.1:6379> hdel myhash field1
## 再次删除myhash键中字段名为field1的字段,
## 由于上一条命令已经将其删除,因为没有删除,返回0。
## 判断myhash键中是否存在field1字段,由于上一条命令已经将其删除,因为返回0。
## 通过hsetnx命令给myhash添加新字段field1,
## 其值为zhang,因为该字段已经被删除,所以该命令添加成功并返回1。
redis 127.0.0.1:6379> hsetnx myhash field1 study
## 由于myhash的field1字段已经通过上一条命令添加成功,
## 因为本条命令不做任何操作后返回0。
## 删除该键,便于后面示例的测试。redis 127.0.0.1:6379> del myhash(integer) 1## 准备测试数据,该myhash的field字段设定值1。redis 127.0.0.1:6379> hset myhash field 5(integer) 1## 给myhash的field字段的值加1,返回加后的结果。redis 127.0.0.1:6379> hincrby myhash field 1(integer) 6## 给myhash的field字段的值加-1,返回加后的结果。redis 127.0.0.1:6379> hincrby myhash field -1(integer) 5## 给myhash的field字段的值加-10,返回加后的结果。redis 127.0.0.1:6379> hincrby myhash field -10(integer) -5
## 删除该键,便于后面示例的测试。
redis 127.0.0.1:6379> del myhash
## 准备测试数据,该myhash的field字段设定值1。
redis 127.0.0.1:6379> hset myhash field 5
## 给myhash的field字段的值加1,返回加后的结果。
redis 127.0.0.1:6379> hincrby myhash field 1
## 给myhash的field字段的值加-1,返回加后的结果。
redis 127.0.0.1:6379> hincrby myhash field -1
## 给myhash的field字段的值加-10,返回加后的结果。
redis 127.0.0.1:6379> hincrby myhash field -10
(integer) -5
## 删除该键,便于后面示例测试。redis 127.0.0.1:6379> del myhash(integer) 1## 为该键myhash,一次性设置多个字段,## 分别是field1 = "hello", field2 = "world"。redis 127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"OK## 获取myhash键的多个字段,其中field3并不存在,## 因为在返回结果中与该字段对应的值为nil。redis 127.0.0.1:6379> hmget myhash field1 field2 field31) "hello"2) "world"3) (nil)## 返回myhash键的所有字段及其值,从结果中可以看出,他们是逐对列出的。redis 127.0.0.1:6379> hgetall myhash1) "field1"2) "hello"3) "field2"4) "world"## 仅获取myhash键中所有字段的名字。redis 127.0.0.1:6379> hkeys myhash1) "field1"2) "field2"## 仅获取myhash键中所有字段的值。redis 127.0.0.1:6379> hvals myhash1) "hello"2) "world"
## 删除该键,便于后面示例测试。
## 为该键myhash,一次性设置多个字段,
## 分别是field1 = "hello", field2 = "world"。
redis 127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"
## 获取myhash键的多个字段,其中field3并不存在,
## 因为在返回结果中与该字段对应的值为nil。
redis 127.0.0.1:6379> hmget myhash field1 field2 field3
3) (nil)
## 返回myhash键的所有字段及其值,从结果中可以看出,他们是逐对列出的。
redis 127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field2"
4) "world"
## 仅获取myhash键中所有字段的名字。
redis 127.0.0.1:6379> hkeys myhash
2) "field2"
## 仅获取myhash键中所有字段的值。
redis 127.0.0.1:6379> hvals myhash
SADD key member [member ...]
SCARD key
SISMEMBER key member
SMEMBERS key
SPOP key
SREM key member [member ...]
SRANDMEMBER key
SMOVE source destination member
SDIFF key [key ...]
SDIFFSTORE destination key [key ...]
SINTER key [key ...]
SINTERSTORE destination key [key ...]
SUNION key [key ...]
SUNIONSTORE destination key [key ...]
## 在Shell命令行下启动Redis的客户端程序。/> redis-cli## 插入测试数据,由于该键myset之前并不存在,因此参数中的三个成员都被正常插入。redis 127.0.0.1:6379> sadd myset a b c(integer) 3## 由于参数中的a在myset中已经存在,因此本次操作仅仅插入了d和e两个新成员。redis 127.0.0.1:6379> sadd myset a d e(integer) 2## 判断a是否已经存在,返回值为1表示存在。redis 127.0.0.1:6379> sismember myset a(integer) 1## 判断f是否已经存在,返回值为0表示不存在。redis 127.0.0.1:6379> sismember myset f(integer) 0## 通过smembers命令查看插入的结果,从结果可以,输出的顺序和插入顺序无关。redis 127.0.0.1:6379> smembers myset1) "c"2) "d"3) "a"4) "b"5) "e"## 获取Set集合中元素的数量。redis 127.0.0.1:6379> scard myset(integer) 5
## 在Shell命令行下启动Redis的客户端程序。
## 插入测试数据,由于该键myset之前并不存在,因此参数中的三个成员都被正常插入。
redis 127.0.0.1:6379> sadd myset a b c
(integer) 3
## 由于参数中的a在myset中已经存在,因此本次操作仅仅插入了d和e两个新成员。
redis 127.0.0.1:6379> sadd myset a d e
## 判断a是否已经存在,返回值为1表示存在。
redis 127.0.0.1:6379> sismember myset a
## 判断f是否已经存在,返回值为0表示不存在。
redis 127.0.0.1:6379> sismember myset f
## 通过smembers命令查看插入的结果,从结果可以,输出的顺序和插入顺序无关。
redis 127.0.0.1:6379> smembers myset
3) "a"
## 获取Set集合中元素的数量。
redis 127.0.0.1:6379> scard myset
## 删除该键,便于后面的测试。redis 127.0.0.1:6379> del myset(integer) 1## 为后面的示例准备测试数据。redis 127.0.0.1:6379> sadd myset a b c d(integer) 4## 查看Set中成员的位置。redis 127.0.0.1:6379> smembers myset1) "c"2) "d"3) "a"4) "b"## 从结果可以看出,该命令确实是随机的返回了某一成员。redis 127.0.0.1:6379> srandmember myset"c"## Set中尾部的成员b被移出并返回,事实上b并不是之前插入的第一个或最后一个成员。redis 127.0.0.1:6379> spop myset"b"## 查看移出后Set的成员信息。redis 127.0.0.1:6379> smembers myset1) "c"2) "d"3) "a"## 从Set中移出a、d和f三个成员,其中f并不存在,因此只有a和d两个成员被移出,返回为2。redis 127.0.0.1:6379> srem myset a d f(integer) 2## 查看移出后的输出结果。redis 127.0.0.1:6379> smembers myset1) "c"## 为后面的smove命令准备数据。redis 127.0.0.1:6379> sadd myset a b(integer) 2redis 127.0.0.1:6379> sadd myset2 c d(integer) 2## 将a从myset移到myset2,从结果可以看出移动成功。redis 127.0.0.1:6379> smove myset myset2 a(integer) 1## 再次将a从myset移到myset2,由于此时a已经不是myset的成员了,## 因此移动失败并返回0。redis 127.0.0.1:6379> smove myset myset2 a(integer) 0## 分别查看myset和myset2的成员,确认移动是否真的成功。redis 127.0.0.1:6379> smembers myset1) "b"redis 127.0.0.1:6379> smembers myset21) "c"2) "d"3) "a"
## 删除该键,便于后面的测试。
redis 127.0.0.1:6379> del myset
redis 127.0.0.1:6379> sadd myset a b c d
## 查看Set中成员的位置。
## 从结果可以看出,该命令确实是随机的返回了某一成员。
redis 127.0.0.1:6379> srandmember myset
## Set中尾部的成员b被移出并返回,事实上b并不是之前插入的第一个或最后一个成员。
redis 127.0.0.1:6379> spop myset
"b"
## 查看移出后Set的成员信息。
## 从Set中移出a、d和f三个成员,其中f并不存在,因此只有a和d两个成员被移出,返回为2。
redis 127.0.0.1:6379> srem myset a d f
## 查看移出后的输出结果。
## 为后面的smove命令准备数据。
redis 127.0.0.1:6379> sadd myset a b
redis 127.0.0.1:6379> sadd myset2 c d
## 将a从myset移到myset2,从结果可以看出移动成功。
redis 127.0.0.1:6379> smove myset myset2 a
## 再次将a从myset移到myset2,由于此时a已经不是myset的成员了,
## 因此移动失败并返回0。
## 分别查看myset和myset2的成员,确认移动是否真的成功。
1) "b"
redis 127.0.0.1:6379> smembers myset2
##为后面的命令准备测试数据。redis 127.0.0.1:6379> sadd myset a b c d(integer) 4redis 127.0.0.1:6379> sadd myset2 c(integer) 1redis 127.0.0.1:6379> sadd myset3 a c e(integer) 3##myset和myset2相比,a、b和d三个成员是两者之间的差异成员。## 再用这个结果继续和 myset3进行差异比较,b和d是myset3不存在的成员。redis 127.0.0.1:6379> sdiff myset myset2 myset31) "d"2) "b"##将3个集合的差异成员存在在diffkey关联的Set中,并返回插入的成员数量。redis 127.0.0.1:6379> sdiffstore diffkey myset myset2 myset3(integer) 2##查看一下sdiffstore的操作结果。redis 127.0.0.1:6379> smembers diffkey1) "d"2) "b"##从之前准备的数据就可以看出,这三个Set的成员交集只有c。redis 127.0.0.1:6379> sinter myset myset2 myset31) "c"##将3个集合中的交集成员存储到与interkey关联的Set中,并返回交集成员的数量。redis 127.0.0.1:6379> sinterstore interkey myset myset2 myset3(integer) 1##查看一下sinterstore的操作结果。redis 127.0.0.1:6379> smembers interkey1) "c"##获取3个集合中的成员的并集。 redis 127.0.0.1:6379> sunion myset myset2 myset31) "b"2) "c"3) "d"4) "e"5) "a"##将3个集合中成员的并集存储到unionkey关联的set中,并返回并集成员的数量。redis 127.0.0.1:6379> sunionstore unionkey myset myset2 myset3(integer) 5##查看一下suiionstore的操作结果。redis 127.0.0.1:6379> smembers unionkey1) "b"2) "c"3) "d"4) "e"5) "a"
##为后面的命令准备测试数据。
redis 127.0.0.1:6379> sadd myset2 c
redis 127.0.0.1:6379> sadd myset3 a c e
##myset和myset2相比,a、b和d三个成员是两者之间的差异成员。
## 再用这个结果继续和 myset3进行差异比较,b和d是myset3不存在的成员。
redis 127.0.0.1:6379> sdiff myset myset2 myset3
##将3个集合的差异成员存在在diffkey关联的Set中,并返回插入的成员数量。
redis 127.0.0.1:6379> sdiffstore diffkey myset myset2 myset3
##查看一下sdiffstore的操作结果。
redis 127.0.0.1:6379> smembers diffkey
##从之前准备的数据就可以看出,这三个Set的成员交集只有c。
redis 127.0.0.1:6379> sinter myset myset2 myset3
##将3个集合中的交集成员存储到与interkey关联的Set中,并返回交集成员的数量。
redis 127.0.0.1:6379> sinterstore interkey myset myset2 myset3
##查看一下sinterstore的操作结果。
redis 127.0.0.1:6379> smembers interkey
##获取3个集合中的成员的并集。
redis 127.0.0.1:6379> sunion myset myset2 myset3
3) "d"
4) "e"
5) "a"
##将3个集合中成员的并集存储到unionkey关联的set中,并返回并集成员的数量。
redis 127.0.0.1:6379> sunionstore unionkey myset myset2 myset3
##查看一下suiionstore的操作结果。
redis 127.0.0.1:6379> smembers unionkey
ZADD key score member [score] [member]
ZCARD key
ZCOUNT key min max
ZINCRBY key increment member
ZRANGE key start stop [WITHSCORES]
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
ZRANK key member
ZREM key member [member ...]
ZREVRANGE key start stop [WITHSCORES]
ZREVRANK key member
ZSCORE key member
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
ZREMRANGEBYRANK key start stop
ZREMRANGEBYSCORE key min max
##在Shell的命令行下启动Redis客户端工具。/> redis-cli##添加一个分数为1的成员。redis 127.0.0.1:6379> zadd myzset 1 "one"(integer) 1## 添加两个分数分别是2和3的两个成员。redis 127.0.0.1:6379> zadd myzset 2 "two" 3 "three"(integer) 2## 0表示第一个成员,-1表示最后一个成员。## WITHSCORES选项表示返回的结果中包含每个成员及其分数,否则只返回成员。redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES1) "one"2) "1"3) "two"4) "2"5) "three"6) "3"## 获取成员one在Sorted-Set中的位置索引值。0表示第一个位置。redis 127.0.0.1:6379> zrank myzset one(integer) 0## 成员four并不存在,因此返回nil。redis 127.0.0.1:6379> zrank myzset four(nil)## 获取myzset键中成员的数量。 redis 127.0.0.1:6379> zcard myzset(integer) 3## 返回与myzset关联的Sorted-Set中,## 分数满足表达式1 <= score <= 2的成员的数量。redis 127.0.0.1:6379> zcount myzset 1 2(integer) 2## 删除成员one和two,返回实际删除成员的数量。redis 127.0.0.1:6379> zrem myzset one two(integer) 2## 查看是否删除成功。redis 127.0.0.1:6379> zcard myzset(integer) 1#获取成员three的分数。返回值是字符串形式。redis 127.0.0.1:6379> zscore myzset three"3"## 由于成员two已经被删除,所以该命令返回nil。redis 127.0.0.1:6379> zscore myzset two(nil)## 将成员one的分数增加2,并返回该成员更新后的分数。redis 127.0.0.1:6379> zincrby myzset 2 one"3"## 将成员one的分数增加-1,并返回该成员更新后的分数。redis 127.0.0.1:6379> zincrby myzset -1 one"2"## 查看在更新了成员的分数后是否正确。redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES1) "one"2) "2"3) "two"4) "2"5) "three"6) "3"
##在Shell的命令行下启动Redis客户端工具。
##添加一个分数为1的成员。
redis 127.0.0.1:6379> zadd myzset 1 "one"
## 添加两个分数分别是2和3的两个成员。
redis 127.0.0.1:6379> zadd myzset 2 "two" 3 "three"
## 0表示第一个成员,-1表示最后一个成员。
## WITHSCORES选项表示返回的结果中包含每个成员及其分数,否则只返回成员。
redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
## 获取成员one在Sorted-Set中的位置索引值。0表示第一个位置。
redis 127.0.0.1:6379> zrank myzset one
## 成员four并不存在,因此返回nil。
redis 127.0.0.1:6379> zrank myzset four
## 获取myzset键中成员的数量。
redis 127.0.0.1:6379> zcard myzset
## 返回与myzset关联的Sorted-Set中,
## 分数满足表达式1 <= score <= 2的成员的数量。
redis 127.0.0.1:6379> zcount myzset 1 2
## 删除成员one和two,返回实际删除成员的数量。
redis 127.0.0.1:6379> zrem myzset one two
## 查看是否删除成功。
#获取成员three的分数。返回值是字符串形式。
redis 127.0.0.1:6379> zscore myzset three
"3"
## 由于成员two已经被删除,所以该命令返回nil。
redis 127.0.0.1:6379> zscore myzset two
## 将成员one的分数增加2,并返回该成员更新后的分数。
redis 127.0.0.1:6379> zincrby myzset 2 one
## 将成员one的分数增加-1,并返回该成员更新后的分数。
redis 127.0.0.1:6379> zincrby myzset -1 one
"2"
## 查看在更新了成员的分数后是否正确。
2) "2"
redis 127.0.0.1:6379> del myzset(integer) 1redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four(integer) 4## 获取分数满足表达式1 <= score <= 2的成员。redis 127.0.0.1:6379> zrangebyscore myzset 1 21) "one"2) "two"## 获取分数满足表达式1 < score <= 2的成员。redis 127.0.0.1:6379> zrangebyscore myzset (1 21) "two"## -inf表示第一个成员,+inf表示最后一个成员,## limit后面的参数用于限制返回成员的自己,## 2表示从位置索引(0-based)等于2的成员开始,去后面3个成员。redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 31) "three"2) "four"## 删除分数满足表达式1 <= score <= 2的成员,并返回实际删除的数量。redis 127.0.0.1:6379> zremrangebyscore myzset 1 2(integer) 2## 看出一下上面的删除是否成功。redis 127.0.0.1:6379> zrange myzset 0 -11) "three"2) "four"## 删除位置索引满足表达式0 <= rank <= 1的成员。redis 127.0.0.1:6379> zremrangebyrank myzset 0 1(integer) 2## 查看上一条命令是否删除成功。redis 127.0.0.1:6379> zcard myzset(integer) 0
redis 127.0.0.1:6379> del myzset
redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
## 获取分数满足表达式1 <= score <= 2的成员。
redis 127.0.0.1:6379> zrangebyscore myzset 1 2
2) "two"
## 获取分数满足表达式1 < score <= 2的成员。
redis 127.0.0.1:6379> zrangebyscore myzset (1 2
1) "two"
## -inf表示第一个成员,+inf表示最后一个成员,
## limit后面的参数用于限制返回成员的自己,
## 2表示从位置索引(0-based)等于2的成员开始,去后面3个成员。
redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 3
1) "three"
2) "four"
## 删除分数满足表达式1 <= score <= 2的成员,并返回实际删除的数量。
redis 127.0.0.1:6379> zremrangebyscore myzset 1 2
## 看出一下上面的删除是否成功。
redis 127.0.0.1:6379> zrange myzset 0 -1
## 删除位置索引满足表达式0 <= rank <= 1的成员。
redis 127.0.0.1:6379> zremrangebyrank myzset 0 1
## 查看上一条命令是否删除成功。
## 为后面的示例准备测试数据。redis 127.0.0.1:6379> del myzset(integer) 0redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four(integer) 4## 以位置索引从高到低的方式获取并返回此区间内的成员。redis 127.0.0.1:6379> zrevrange myzset 0 -1 WITHSCORES1) "four"2) "4"3) "three"4) "3"5) "two"6) "2"7) "one"8) "1"## 由于是从高到低的排序,所以位置等于0的是four,1是three,并以此类推。redis 127.0.0.1:6379> zrevrange myzset 1 31) "three"2) "two"3) "one"## 由于是从高到低的排序,所以one的位置是3。redis 127.0.0.1:6379> zrevrank myzset one(integer) 3## 由于是从高到低的排序,所以four的位置是0。redis 127.0.0.1:6379> zrevrank myzset four(integer) 0## 获取分数满足表达式3 >= score >= 0的成员,并以相反的顺序输出,## 即从高到底的顺序。redis 127.0.0.1:6379> zrevrangebyscore myzset 3 01) "three"2) "two"3) "one"## 该命令支持limit选项,其含义等同于zrangebyscore中的该选项,## 只是在计算位置时按照相反的顺序计算和获取。redis 127.0.0.1:6379> zrevrangebyscore myzset 4 0 limit 1 21) "three"2) "two"
## 以位置索引从高到低的方式获取并返回此区间内的成员。
redis 127.0.0.1:6379> zrevrange myzset 0 -1 WITHSCORES
1) "four"
2) "4"
3) "three"
4) "3"
5) "two"
6) "2"
7) "one"
8) "1"
## 由于是从高到低的排序,所以位置等于0的是four,1是three,并以此类推。
redis 127.0.0.1:6379> zrevrange myzset 1 3
3) "one"
## 由于是从高到低的排序,所以one的位置是3。
redis 127.0.0.1:6379> zrevrank myzset one
## 由于是从高到低的排序,所以four的位置是0。
redis 127.0.0.1:6379> zrevrank myzset four
## 获取分数满足表达式3 >= score >= 0的成员,并以相反的顺序输出,
## 即从高到底的顺序。
redis 127.0.0.1:6379> zrevrangebyscore myzset 3 0
## 该命令支持limit选项,其含义等同于zrangebyscore中的该选项,
## 只是在计算位置时按照相反的顺序计算和获取。
redis 127.0.0.1:6379> zrevrangebyscore myzset 4 0 limit 1 2
KEYS pattern
DEL key [key ...]
EXISTS key
MOVE key db
RENAME key newkey
RENAMENX key newkey
PERSIST key
EXPIRE key seconds
EXPIREAT key timestamp
TTL key
RANDOMKEY
TYPE key
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
## 在Shell命令行下启动Redis客户端工具。/> redis-cli## 清空当前选择的数据库,以便于对后面示例的理解。redis 127.0.0.1:6379> flushdbOK## 添加String类型的模拟数据。redis 127.0.0.1:6379> set mykey 2OKredis 127.0.0.1:6379> set mykey2 "hello"OK## 添加Set类型的模拟数据。redis 127.0.0.1:6379> sadd mysetkey 1 2 3(integer) 3## 添加Hash类型的模拟数据。redis 127.0.0.1:6379> hset mmtest username "study"(integer) 1## 根据参数中的模式,获取当前数据库中符合该模式的所有key,## 从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。redis 127.0.0.1:6379> keys my*1) "mysetkey"2) "mykey"3) "mykey2"## 删除了两个Keys。redis 127.0.0.1:6379> del mykey mykey2(integer) 2## 查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。redis 127.0.0.1:6379> exists mykey(integer) 0## 查看一下没有删除的Key,以和上面的命令结果进行比较。redis 127.0.0.1:6379> exists mysetkey(integer) 1## 将当前数据库中的mysetkey键移入到ID为1的数据库中,## 从结果可以看出已经移动成功。redis 127.0.0.1:6379> move mysetkey 1(integer) 1## 打开ID为1的数据库。redis 127.0.0.1:6379> select 1OK## 查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。redis 127.0.0.1:6379[1]> exists mysetkey(integer) 1## 在重新打开ID为0的缺省数据库。redis 127.0.0.1:6379[1]> select 0OK## 查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。redis 127.0.0.1:6379> exists mysetkey(integer) 0## 准备新的测试数据。 redis 127.0.0.1:6379> set mykey "hello"OK## 将mykey改名为mykey1redis 127.0.0.1:6379> rename mykey mykey1OK## 由于mykey已经被重新命名,再次获取将返回nil。redis 127.0.0.1:6379> get mykey(nil)## 通过新的键名获取。redis 127.0.0.1:6379> get mykey1"hello"## 由于mykey已经不存在了,所以返回错误信息。redis 127.0.0.1:6379> rename mykey mykey1(error) ERR no such key## 为renamenx准备测试keyredis 127.0.0.1:6379> set oldkey "hello"OKredis 127.0.0.1:6379> set newkey "world"OK## 由于newkey已经存在,因此该命令未能成功执行。redis 127.0.0.1:6379> renamenx oldkey newkey(integer) 0## 查看newkey的值,发现它也没有被renamenx覆盖。redis 127.0.0.1:6379> get newkey"world"
## 在Shell命令行下启动Redis客户端工具。
## 清空当前选择的数据库,以便于对后面示例的理解。
redis 127.0.0.1:6379> flushdb
## 添加String类型的模拟数据。
redis 127.0.0.1:6379> set mykey 2
redis 127.0.0.1:6379> set mykey2 "hello"
## 添加Set类型的模拟数据。
redis 127.0.0.1:6379> sadd mysetkey 1 2 3
## 添加Hash类型的模拟数据。
redis 127.0.0.1:6379> hset mmtest username "study"
## 根据参数中的模式,获取当前数据库中符合该模式的所有key,
## 从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。
redis 127.0.0.1:6379> keys my*
1) "mysetkey"
2) "mykey"
3) "mykey2"
## 删除了两个Keys。
redis 127.0.0.1:6379> del mykey mykey2
## 查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。
redis 127.0.0.1:6379> exists mykey
## 查看一下没有删除的Key,以和上面的命令结果进行比较。
redis 127.0.0.1:6379> exists mysetkey
## 将当前数据库中的mysetkey键移入到ID为1的数据库中,
## 从结果可以看出已经移动成功。
redis 127.0.0.1:6379> move mysetkey 1
## 打开ID为1的数据库。
redis 127.0.0.1:6379> select 1
## 查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。
redis 127.0.0.1:6379[1]> exists mysetkey
## 在重新打开ID为0的缺省数据库。
redis 127.0.0.1:6379[1]> select 0
## 查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。
## 准备新的测试数据。
redis 127.0.0.1:6379> set mykey "hello"
## 将mykey改名为mykey1
redis 127.0.0.1:6379> rename mykey mykey1
## 由于mykey已经被重新命名,再次获取将返回nil。
## 通过新的键名获取。
redis 127.0.0.1:6379> get mykey1
## 由于mykey已经不存在了,所以返回错误信息。
(error) ERR no such key
## 为renamenx准备测试key
redis 127.0.0.1:6379> set oldkey "hello"
redis 127.0.0.1:6379> set newkey "world"
## 由于newkey已经存在,因此该命令未能成功执行。
redis 127.0.0.1:6379> renamenx oldkey newkey
## 查看newkey的值,发现它也没有被renamenx覆盖。
redis 127.0.0.1:6379> get newkey
"world"
## 为后面的示例准备的测试数据。redis 127.0.0.1:6379> set mykey "hello"OK## 将该键的超时设置为100秒。redis 127.0.0.1:6379> expire mykey 100(integer) 1## 通过ttl命令查看一下还剩下多少秒。redis 127.0.0.1:6379> ttl mykey(integer) 97## 立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。redis 127.0.0.1:6379> persist mykey(integer) 1## ttl的返回值告诉我们,该键已经没有超时了。redis 127.0.0.1:6379> ttl mykey(integer) -1## 为后面的expire命令准备数据。redis 127.0.0.1:6379> del mykey(integer) 1redis 127.0.0.1:6379> set mykey "hello"OK## 设置该键的超时被100秒。redis 127.0.0.1:6379> expire mykey 100(integer) 1## 用ttl命令看一下当前还剩下多少秒,从结果中可以看出还剩下96秒。redis 127.0.0.1:6379> ttl mykey(integer) 96## 重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。redis 127.0.0.1:6379> expire mykey 20(integer) 1## 再用ttl确认一下,从结果中可以看出果然被更新了。redis 127.0.0.1:6379> ttl mykey(integer) 17## 立刻更新该键的值,以使其超时无效。redis 127.0.0.1:6379> set mykey "world"OK## 从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。redis 127.0.0.1:6379> ttl mykey(integer) -1
## 为后面的示例准备的测试数据。
## 将该键的超时设置为100秒。
redis 127.0.0.1:6379> expire mykey 100
## 通过ttl命令查看一下还剩下多少秒。
(integer) 97
## 立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。
redis 127.0.0.1:6379> persist mykey
## ttl的返回值告诉我们,该键已经没有超时了。
## 为后面的expire命令准备数据。
## 设置该键的超时被100秒。
## 用ttl命令看一下当前还剩下多少秒,从结果中可以看出还剩下96秒。
(integer) 96
## 重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。
redis 127.0.0.1:6379> expire mykey 20
## 再用ttl确认一下,从结果中可以看出果然被更新了。
(integer) 17
## 立刻更新该键的值,以使其超时无效。
redis 127.0.0.1:6379> set mykey "world"
## 从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。
## 由于mm键在数据库中不存在,因此该命令返回none。redis 127.0.0.1:6379> type mmnone## mykey的值是字符串类型,因此返回string。redis 127.0.0.1:6379> type mykeystring## 准备一个值是set类型的键。redis 127.0.0.1:6379> sadd mysetkey 1 2(integer) 2## mysetkey的键是set,因此返回字符串set。redis 127.0.0.1:6379> type mysetkeyset## 返回数据库中的任意键。redis 127.0.0.1:6379> randomkey"oldkey"## 清空当前打开的数据库。redis 127.0.0.1:6379> flushdbOK## 由于没有数据了,因此返回nil。redis 127.0.0.1:6379> randomkey(nil)
## 由于mm键在数据库中不存在,因此该命令返回none。
redis 127.0.0.1:6379> type mm
none
## mykey的值是字符串类型,因此返回string。
redis 127.0.0.1:6379> type mykey
string
## 准备一个值是set类型的键。
redis 127.0.0.1:6379> sadd mysetkey 1 2
## mysetkey的键是set,因此返回字符串set。
redis 127.0.0.1:6379> type mysetkey
set
## 返回数据库中的任意键。
redis 127.0.0.1:6379> randomkey
"oldkey"
## 清空当前打开的数据库。
## 由于没有数据了,因此返回nil。
原文链接:http://www.cnblogs.com/haoworld/p/redis-ji-ben-shu-ju-lei-xing-ji-ming-ling-cao-zuo-.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728