文章目录
- Redis客户端命令
- 一、String操作
- 二、List操作
- 三、Set操作
- `sadd setkey value1 value2 value3 ...`
- `smembers setkey`
- `sismember setkey value`
- `scard setkey`
- `srem setkey value1 [value2 value3 ...]`
- `srandmember key num`
- `spop setkey [num]`
- `smove setkey1 setkey2 value`
- `sdiff setkey1 [setkey2 setkey3 ...]`
- `sinter setkey1 [setkey1 setkey3 ...]`
- `sunion setkey1 [setkey2 setkey3 ...]`
- 四、ZSet操作
- 五、Hash操作
Redis客户端命令
exit
- 作用:退出客户端
shutdown
- 作用:关闭redis服务器
select index
- 作用:选择库,index从0-15
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]> select 16
(error) ERR DB index is out of range
127.0.0.1:6379[15]>
dbsize
- 作用:查看当前库中key的数量
keys *
- 查看当前库的所有key
- 可以用
keys k???
查看,一个?
代表一个字符; - 也可以用
keys k*
查看,一个*
号代表0或多个字符;
127.0.0.1:6379> keys k???
1) "key3"
2) "key2"
3) "key1"
127.0.0.1:6379> keys k*
1) "key3"
2) "key2"
3) "key1"
flushdb
- 作用:删除当前库中所有数据
同类操作:
flushall
// 删除所有库中所有数据
exists key
- 作用:判断key是否存在,存在返回1,不存在返回0
move key index
- 作用:将当前key移动到index号库中
127.0.0.1:6379[1]> set k3 hello
OK
127.0.0.1:6379[1]> get k3
"hello"
127.0.0.1:6379[1]> EXISTS k3
(integer) 1
127.0.0.1:6379[1]> move k3 2
(integer) 1
127.0.0.1:6379[1]> EXISTS k3
(integer) 0
127.0.0.1:6379[1]> SELECT 2
OK
127.0.0.1:6379[2]> dbsize
(integer) 1
127.0.0.1:6379[2]> get k3
"hello"
ttl key
- 作用:查看当前key还有多少秒过期,-1表示永不过期,-2 表示已过期
同类操作:
pttl key
// 返回key的剩余生存时间,单位是毫秒;
expire key num
- 作用:设置key的过期时间,单位秒
同类操作:
pexpire key num
// 设置key的过期时间,单位是毫秒
;expireat key time
// 设置key的过期时间,time是以秒为精度表示的时间戳;pexpireat key time
// 设置key的过期时间,time是以毫秒为精度表示的时间戳
127.0.0.1:6379> ttl k2
(integer) -1
127.0.0.1:6379> expire k2 100
(integer) 1
127.0.0.1:6379> ttl k2
(integer) 98
persist key
- 作用:移除一个键的过期时间;
127.0.0.1:6379> expire key 100
(integer) 1
127.0.0.1:6379> ttl key
(integer) 98
127.0.0.1:6379> persist key
(integer) 1
127.0.0.1:6379> ttl key
(integer) -1
del key
- 作用:删除key
type key
- 作用:查看key的数据类型
127.0.0.1:6379> set k2 hello
OK
127.0.0.1:6379> get k2
"hello"
127.0.0.1:6379> type k2
string
127.0.0.1:6379> rpush mylist 1 2 3 4
(integer) 4
127.0.0.1:6379> lrange mylist 0 4
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> type mylist
list
save
与 bgsave
- 作用:立即执行持久化
save
会阻塞当前其他操作,bgsave
会在后台异步执行快照操作,同时还能响应客户端请求,- 可以通过
lastsave
命令获取最后一次成功执行快照的时间。
info
- 查看服务器信息,如果只输入
info
会把全部信息打印出来,包括:Server
、Clients
、Memory
、Persistence
、Stats
、Replication
、CPU
、Cluster
、Keyspace
,等,可以执行info [section]
来查看特定的信息
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:0
master_replid:fc1c73850da40c0187e27048bdfe4a3facc30bf8
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
Redis 数据操作
redis中的五个对象类型:
- string
- list
- set (无序集合)
- zset (有序集合)
- hash
一、String操作
set key value
- 作用:设置 key value
- 如果value中有空格,则在两端加引号
- 单双引号的区别是:单引号会将特殊字符转义,双引号原样存储
127.0.0.1:6379> set k5 'hello world'
OK
127.0.0.1:6379> get k5
"hello world"
127.0.0.1:6379> set k6 "hello world"
OK
127.0.0.1:6379> get k6
"hello world"
127.0.0.1:6379> set k7 'hello\tworld'
OK
127.0.0.1:6379> get k7
"hello\\tworld"
127.0.0.1:6379> strlen k7
(integer) 12
127.0.0.1:6379> set k8 "hello\tworld"
OK
127.0.0.1:6379> get k8
"hello\tworld"
127.0.0.1:6379> strlen k8
(integer) 11
get key
- 作用:获取key的值
del key
- 作用:删除key
append key value
- 作用:向key中添加值
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379> append k1 world
(integer) 10
127.0.0.1:6379> get k1
"helloworld"
strlen key
- 作用:查看key对应的value的长度
127.0.0.1:6379> get k1
"helloworld"
127.0.0.1:6379> strlen k1
(integer) 10
127.0.0.1:6379> strlen k2
(integer) 5
127.0.0.1:6379> get k2
"world"
incr key
- 作用:给key对应的value值加1,如果value不是数字则报错
同类操作:
decr key
// 减1incrby key num
// 加上指定的值decrby key num
// 减去指定的值
127.0.0.1:6379> set k3 10
OK
127.0.0.1:6379> incr k3
(integer) 11
127.0.0.1:6379> incrby k3 10
(integer) 21
127.0.0.1:6379> decr k3
(integer) 20
127.0.0.1:6379> decrby k3 10
(integer) 10
127.0.0.1:6379> set k4 hello
OK
127.0.0.1:6379> incr k4
(error) ERR value is not an integer or out of range
getrange key start end
- 作用:获取子串,从start到end
- end位置的字符也包含
- end可以用负数,从结尾开始查,-1代表最后一位字符
127.0.0.1:6379> set k4 'hello world'
OK
127.0.0.1:6379> get k4
"hello world"
127.0.0.1:6379> strlen k4
(integer) 11
127.0.0.1:6379> getrange k4 0 0
"h"
127.0.0.1:6379> getrange k4 0 1
"he"
127.0.0.1:6379> getrange k4 0 11
"hello world"
127.0.0.1:6379> getrange k4 0 10
"hello world"
127.0.0.1:6379> getrange k4 0 9
"hello worl"
127.0.0.1:6379> getrange k4 0 -1
"hello world"
127.0.0.1:6379> getrange k4 0 -2
"hello worl"
setrange key num str
- 作用:从num位置开始向后将数据修改为str
127.0.0.1:6379> set k1 hi
OK
127.0.0.1:6379> get k1
"hi"
127.0.0.1:6379> SETRANGE k1 0 he
(integer) 2
127.0.0.1:6379> get k1
"he"
127.0.0.1:6379> setrange k1 0 hello
(integer) 5
127.0.0.1:6379> get k1
"hello"
setex key time value
- 作用:在设置值时,同时设置有效期
setex
:set with expire- 单位是秒
127.0.0.1:6379> setex k4 10 hello
OK
127.0.0.1:6379> get k4
"hello"
127.0.0.1:6379> ttl k4
(integer) 4
127.0.0.1:6379> ttl k4
(integer) 0
setnx key value
- 作用:当key不存在时,设置key值,当key存在时,不覆盖
setnx
: set if not exist
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379> setnx k1 hi
(integer) 0
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379> get kk1
(nil)
127.0.0.1:6379> setnx kk1 value
(integer) 1
127.0.0.1:6379> get kk1
"value"
mset key1 value1 key2 value2 ...
- 作用:同时给多个key设置值
同类操作:
mget key1 key2 key3 ...
// 同时获取多个key的值m
是more
的意思;
127.0.0.1:6379> mset kk1 value1 kk2 value2 kk3 value3
OK
127.0.0.1:6379> mget kk1 kk2 kk3
1) "value1"
2) "value2"
3) "value3"
msetnx key1 value1 key2 value2 ...
- 作用:当key1,key2…都不存在时,为key赋值,只要有一个存在就不赋值。
127.0.0.1:6379> mget key1 key4
1) "value1"
2) (nil)
127.0.0.1:6379> msetnx key1 kkvalue1 key4 kkvalue4
(integer) 0
127.0.0.1:6379> mget key1 key4
1) "value1"
2) (nil)
127.0.0.1:6379> mget key4 key5
1) (nil)
2) (nil)
127.0.0.1:6379> msetnx key4 kkvalue4 key5 kkvalue5
(integer) 1
127.0.0.1:6379> mget key4 key5
1) "kkvalue4"
2) "kkvalue5"
getset key value
- 作用:将key的值返回,然后赋值为value
127.0.0.1:6379> get key1
"vv1"
127.0.0.1:6379> getset key1 value1
"vv1"
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key2
(nil)
127.0.0.1:6379> getset key2 value2
(nil)
127.0.0.1:6379> get key2
"value2"
二、List操作
lrange listkey start end
- 查看list中的数据,左边从start开始,到end结束;
- end 可以是负数,负数时从右开始数,包含第end位元素;
- 0 到 -1 代表整个链表;
注意
:这里的l
是list
的意思不是left
,没有rrange
命令;
127.0.0.1:6379> lpush listkey 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange listkey 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lrange listkey 0 4
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lrange listkey 1 4
1) "4"
2) "3"
3) "2"
4) "1"
lpush
与 rpush
lpush listkey value1 value2 value3 ...
// 依次在左边插入元素rpush listkey value1 value2 value3 ...
// 依次在右边插入元素- 在左边插入元素时,list中元素顺序与插入顺序相反;
127.0.0.1:6379> lpush listkey 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange listkey 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> rpush listkey2 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange listkey2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
lpop
与 rpop
lpop listkey
// 弹出list中左边第一个元素rpop listkey
// 弹出list中右边第一个元素
127.0.0.1:6379> lrange listkey 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lpop listkey
"5"
127.0.0.1:6379> lrange listkey 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lrange listkey 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> rpop listkey
"1"
127.0.0.1:6379> lrange listkey 0 -1
1) "4"
2) "3"
3) "2"
rpoplpush listkey1 listkey2
- 将listkey1右边的元素弹出,然后从左边插入listkey2
127.0.0.1:6379> lrange listkey1 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> lrange listkey2 0 -1
1) "0"
2) "1"
3) "2"
127.0.0.1:6379> rpoplpush listkey1 listkey2
"4"
127.0.0.1:6379> lrange listkey1 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> lrange listkey2 0 -1
1) "4"
2) "0"
3) "1"
4) "2"
- 注意:没有
lpoprpush
、lpoplpush
、rpoprpush
127.0.0.1:6379> lpoprpush listkey2 listkey1
(error) ERR unknown command `lpoprpush`, with args beginning with: `listkey2`, `listkey1`,
127.0.0.1:6379> rpoprpush listkey1 listkey2
(error) ERR unknown command `rpoprpush`, with args beginning with: `listkey1`, `listkey2`,
127.0.0.1:6379> lpuplpush listkey1 listkey2
(error) ERR unknown command `lpuplpush`, with args beginning with: `listkey1`, `listkey2`,
- 可以在同一个list上操作:
127.0.0.1:6379> lrange listkey1 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> rpoplpush listkey1 listkey1
"3"
127.0.0.1:6379> lrange listkey1 0 -1
1) "3"
2) "0"
3) "1"
4) "2"
lindex listkey index
- 作用:获取List索引位index的元素
- index是从0 开始的,如果是负数,则从右边开始计算,最后一位是
-1
注意
:l
是list
的意思不是left
,没有rindex
127.0.0.1:6379> lrange listkey 0 -1
1) "4"
2) "3"
3) "2"
127.0.0.1:6379> lindex listkey 0
"4"
127.0.0.1:6379> lindex listkey 1
"3"
127.0.0.1:6379> lindex listkey 5
(nil)
127.0.0.1:6379> lindex listkey -1
"2"
llen listkey
- 作用:获取List的长度
l
是list
的意思;- 时间复杂度是O(1)
lrem listkey num vlaue
- 作用:从list中删除num个值为value的元素
- num小于等于0 时,删除全部值为value的元素
127.0.0.1:6379> lrange listkey 0 -1
1) "1"
2) "1"
3) "1"
4) "2"
5) "2"
6) "2"
7) "3"
8) "3"
9) "3"
127.0.0.1:6379> lrem listkey 1 2
(integer) 1
127.0.0.1:6379> lrange listkey 0 -1
1) "1"
2) "1"
3) "1"
4) "2"
5) "2"
6) "3"
7) "3"
8) "3"
127.0.0.1:6379> lrem listkey 3 3
(integer) 3
127.0.0.1:6379> lrange listkey 0 -1
1) "1"
2) "1"
3) "1"
4) "2"
5) "2"
127.0.0.1:6379> lrem listkey 0 1
(integer) 3
127.0.0.1:6379> lrange listkey 0 -1
1) "2"
2) "2"
ltrim listkey start end
- 作用:将listkey中从start到end位置的元素取出来重新赋值给listkey;
- 注意:包括结尾位置的元素
- end也可以用负数
127.0.0.1:6379> lrange listkey 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
6) "5"
7) "6"
127.0.0.1:6379> ltrim listkey 0 4
OK
127.0.0.1:6379> lrange listkey 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> ltrim listkey 0 -2
OK
127.0.0.1:6379> lrange listkey 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
lset key index value
- 作用:将index位置的元素设置为value;
127.0.0.1:6379> lrange listkey 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> lset listkey 0 8
OK
127.0.0.1:6379> lrange listkey 0 -1
1) "8"
2) "1"
3) "2"
4) "3"
5) "4"
linsert listkey before/after value1 value2
- 作用:在value1前边/后边插入值value2
127.0.0.1:6379> lrange listkey 0 -1
1) "8"
2) "1"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> linsert listkey before 8 9
(integer) 6
127.0.0.1:6379> lrange listkey 0 -1
1) "9"
2) "8"
3) "1"
4) "2"
5) "3"
6) "4"
127.0.0.1:6379> linsert listkey after 9 x
(integer) 7
127.0.0.1:6379> lrange listkey 0 -1
1) "9"
2) "x"
3) "8"
4) "1"
5) "2"
6) "3"
7) "4"
三、Set操作
sadd setkey value1 value2 value3 ...
- 作用:将value值加入set,如果有重复的value,则只存储一个;
s
是set
的意思;
smembers setkey
- 作用:查看set中的元素;
127.0.0.1:6379> sadd setkey 1 2 3 4 4
(integer) 4
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
sismember setkey value
- 作用:判断value是否在set中,存在返回1,不存在返回0
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> sismember setkey 3
(integer) 1
127.0.0.1:6379> sismember setkey 5
(integer) 0
scard setkey
- 作用:获取set中元素个数;
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> scard setkey
(integer) 4
srem setkey value1 [value2 value3 ...]
- 作用:删除set中值为value的元素;
- 如果set中不存在value元素,则返回0;
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> srem setkey 3
(integer) 1
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "4"
127.0.0.1:6379> srem setkey 5
(integer) 0
# 可以同时删除多个
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
127.0.0.1:6379> srem setkey 5 6 7 8
(integer) 3
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
srandmember key num
- 作用:从set中随机抽取num个数字;
- 抽取的数字中不会有重复数字;
- 所以,如果num大于set中元素个数,则将set中所有元素返回
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
127.0.0.1:6379> srandmember setkey 3
1) "6"
2) "7"
3) "3"
127.0.0.1:6379> srandmember setkey 3
1) "2"
2) "1"
3) "4"
127.0.0.1:6379> srandmember setkey 3
1) "1"
2) "4"
3) "7"
spop setkey [num]
- 作用:随机弹出num个元素,如果num没写,默认是1个
127.0.0.1:6379> smembers setkey
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> spop setkey 2
1) "1"
2) "4"
127.0.0.1:6379> smembers setkey
1) "2"
2) "3"
127.0.0.1:6379> spop setkey
"2"
127.0.0.1:6379> smembers setkey
1) "3"
smove setkey1 setkey2 value
- 作用:将setkey1里的value移动到setkey2
- 如果setkey1中存在value且移动成功则返回1;
- 如果setkey1中不存在value则返回0;
127.0.0.1:6379> smembers setkey1
1) "x"
2) "z"
3) "y"
127.0.0.1:6379> smembers setkey2
1) "m"
2) "s"
3) "l"
127.0.0.1:6379> smove setkey1 setkey2 x
(integer) 1
127.0.0.1:6379> smembers setkey1
1) "z"
2) "y"
127.0.0.1:6379> smembers setkey2
1) "x"
2) "m"
3) "s"
4) "l"
127.0.0.1:6379> smove setkey1 setkey2 t
(integer) 0
sdiff setkey1 [setkey2 setkey3 ...]
- 作用:返回在setkey1中但是不在
setkey2...
中的元素; - 如果参数不提供setkey2,则返回setkey1中的所有元素;
127.0.0.1:6379> smembers setkey1
1) "x"
2) "z"
3) "y"
127.0.0.1:6379> smembers setkey2
1) "x"
2) "m"
3) "s"
4) "l"
127.0.0.1:6379> sdiff setkey1
1) "x"
2) "y"
3) "z"
127.0.0.1:6379> sdiff setkey1 setkey2
1) "y"
2) "z"
sinter setkey1 [setkey1 setkey3 ...]
- 作用:返回setkey1、setkey2…集合元素的交集;
- 如果参数不提供setkey2则返回setkey1中全部元素;
127.0.0.1:6379> smembers setkey1
1) "x"
2) "z"
3) "y"
127.0.0.1:6379> smembers setkey2
1) "x"
2) "m"
3) "s"
4) "l"
127.0.0.1:6379> sinter setkey1
1) "x"
2) "z"
3) "y"
127.0.0.1:6379> sinter setkey1 setkey2
1) "x"
sunion setkey1 [setkey2 setkey3 ...]
- 作用:返回setkey1、setkey2 … 中元素的并集
127.0.0.1:6379> smembers setkey1
1) "x"
2) "z"
3) "y"
127.0.0.1:6379> smembers setkey2
1) "x"
2) "m"
3) "s"
4) "l"
127.0.0.1:6379> sunion setkey1
1) "x"
2) "y"
3) "z"
127.0.0.1:6379> sunion setkey1 setkey2
1) "s"
2) "z"
3) "m"
4) "x"
5) "y"
6) "l"
四、ZSet操作
- 有序的集合,和Set一样是String类型元素的集合,且不允许有重复元素
- 每个元素都会关联一个double类型的分数,通过分数为集合中的元素进行从小到大的排序;zset的成员是唯一的,但是分数却可以重复;
- 在set的基础上加了一个score的值,之前set是k1 v2 k2 v2 ,现在zset是k1 score2 v2 k2 score2 v2;
zadd
zadd zsetkey score1 value1 [score2 value2 ...]
// 添加值- 存储时,会按照score排序;
127.0.0.1:6379> zadd zsetkey 1 value1 2 value2 3 value3
(integer) 3
127.0.0.1:6379> zadd zsetkey 1 value4
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1
1) "value1"
2) "value4"
3) "value2"
4) "value3"
zrange
与 zrevrange
zrange zsetkey start end [withscores]
// 获取zset里从start到end的元素zrevrange zsetkey start end [withscores]
// 逆向获取元素withscores
意思是把score也显示出来
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "value1"
2) "10"
3) "value2"
4) "20"
5) "value3"
6) "30"
7) "value4"
8) "40"
127.0.0.1:6379> zrange zsetkey 0 -1
1) "value1"
2) "value2"
3) "value3"
4) "value4"
127.0.0.1:6379> zrevrange zsetkey 0 -1
1) "value4"
2) "value3"
3) "value2"
4) "value1"
127.0.0.1:6379> zrevrange zsetkey 0 -1 withscores
1) "value4"
2) "40"
3) "value3"
4) "30"
5) "value2"
6) "20"
7) "value1"
8) "10"
zrangebyscore
与 zrevrangebyscore
zrangebyscore zsetkey minscore maxscore [withscores]
// 取score值在[minscore,maxscore]的元素zrevrangebyscore zsetkey maxscore minscore [withscores]
// 按score逆向获取
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "value1"
2) "10"
3) "value2"
4) "20"
5) "value3"
6) "30"
7) "value4"
8) "40"
127.0.0.1:6379> zrangebyscore zsetkey 10 20
1) "value1"
2) "value2"
# 不包含score
127.0.0.1:6379> zrangebyscore zsetkey 10 (30
1) "value1"
2) "value2"
127.0.0.1:6379> zrangebyscore zsetkey (10 (30
1) "value2"
# 分页
127.0.0.1:6379> zrangebyscore zsetkey 10 30
1) "value1"
2) "value2"
3) "value3"
127.0.0.1:6379> zrangebyscore zsetkey 10 30 limit 0 2
1) "value1"
2) "value2"
# 逆向
127.0.0.1:6379> zrangebyscore zsetkey 10 40 withscores
1) "value1"
2) "10"
3) "value2"
4) "20"
5) "value3"
6) "30"
7) "value4"
8) "40"
127.0.0.1:6379> zrevrangebyscore zsetkey 40 10 withscores
1) "value4"
2) "40"
3) "value3"
4) "30"
5) "value2"
6) "20"
7) "value1"
8) "10"
zrem zsetkey value [value2 ...]
- 作用:删除value值;
127.0.0.1:6379> zrange zsetkey 0 -1
1) "value1"
2) "value2"
3) "value3"
4) "value4"
127.0.0.1:6379> zrem zsetkey value3
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1
1) "value1"
2) "value2"
3) "value4"
zcard zsetkey
- 作用:返回zset中元素个数
127.0.0.1:6379> zrange zsetkey 0 -1
1) "value1"
2) "value2"
3) "value3"
4) "value4"
127.0.0.1:6379> zcard zsetkey
(integer) 4
zcount zsetkey minscore maxscore
- 作用:统计score在[minscore,maxscore]的元素个数
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "value1"
2) "10"
3) "value2"
4) "20"
5) "value3"
6) "30"
7) "value4"
8) "40"
127.0.0.1:6379> zcount zsetkey 10 30
(integer) 3
zrank
与 zrevrank
zrank zsetkey value
// 获取value的位置zrevrank zsetkey value
// 逆向获取value的位置
127.0.0.1:6379> zrange zsetkey 0 -1
1) "value1"
2) "value2"
3) "value3"
4) "value4"
127.0.0.1:6379> zrank zsetkey value1
(integer) 0
127.0.0.1:6379> zrank zsetkey value2
(integer) 1
127.0.0.1:6379> zrank zsetkey value3
(integer) 2
127.0.0.1:6379> zrank zsetkey value4
(integer) 3
127.0.0.1:6379> zrank zsetkey value5
(nil)
127.0.0.1:6379> zrevrank zsetkey value1
(integer) 3
127.0.0.1:6379> zrevrank zsetkey value2
(integer) 2
127.0.0.1:6379> zrevrank zsetkey value3
(integer) 1
127.0.0.1:6379> zrevrank zsetkey value4
(integer) 0
zscore zsetkey value
- 作用:获取value的score;
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "value1"
2) "10"
3) "value2"
4) "20"
5) "value3"
6) "30"
7) "value4"
8) "40"
127.0.0.1:6379> zscore zsetkey value1
"10"
127.0.0.1:6379> zscore zsetkey value2
"20"
127.0.0.1:6379> zscore zsetkey value3
"30"
127.0.0.1:6379> zscore zsetkey value4
"40"
127.0.0.1:6379> zscore zsetkey value5
(nil)
五、Hash操作
hset hashkey key1 value1 [key2 value2 ...]
- 作用:设置hash值,value是多个键值对;
hget hashkey key
- 作用:获取hashkey中key对应的value;
127.0.0.1:6379> hset hashkey name tom age 20 address BeiJing
(integer) 3
127.0.0.1:6379> hget hashkey name
"tom"
127.0.0.1:6379> hget hashkey age
"20"
127.0.0.1:6379> hget hashkey address
"BeiJing"
127.0.0.1:6379> hset hashkey birthday 2000-01-01
(integer) 1
127.0.0.1:6379> hget hashkey birthday
"2000-01-01"
hmset hashkey key1 value [key2 value ...]
- 作用:一次放入多个key-value对;
- hset也可以支持一次放入多个键值对;
- hset一次放入多个返回的是放入的键值对数量,hmset返回的是OK;
127.0.0.1:6379> hmset hashkey3 name john age 29 address Beijing
OK
127.0.0.1:6379> hmget hashkey3 name age address
1) "john"
2) "29"
3) "Beijing"
hmget hashkey key1 [key2 key3 ...]
- 作用:同时获取多个值;
127.0.0.1:6379> hmget hashkey name age address birthday
1) "tom"
2) "20"
3) "BeiJing"
4) "2000-01-01"
hgetall hashkey
- 作用:返回hash中所有的键值对;
127.0.0.1:6379> hgetall hashkey2
1) "name"
2) "jack"
3) "age"
4) "30"
5) "address"
6) "shanghai"
hdel hashkey key1 [key2 ...]
- 作用:删除键值对
127.0.0.1:6379> hgetall hashkey2
1) "name"
2) "jack"
3) "age"
4) "30"
5) "address"
6) "shanghai"
127.0.0.1:6379> hdel hashkey2 address age
(integer) 2
127.0.0.1:6379> hgetall hashkey2
1) "name"
2) "jack"
hlen hashkey
- 作用:返回hash中键值对的数量
127.0.0.1:6379> hgetall hashkey
1) "name"
2) "tom"
3) "age"
4) "20"
5) "address"
6) "BeiJing"
7) "birthday"
8) "2000-01-01"
127.0.0.1:6379> hlen hashkey
(integer) 4
hexists hashkey key
- 作用:判断key是否存在,存在返回1,不存在返回0
127.0.0.1:6379> hgetall hashkey
1) "name"
2) "tom"
3) "age"
4) "20"
5) "address"
6) "BeiJing"
7) "birthday"
8) "2000-01-01"
127.0.0.1:6379> hlen hashkey
(integer) 4
127.0.0.1:6379> hexists hashkey name
(integer) 1
127.0.0.1:6379> hexists hashkey sex
(integer) 0
hkeys
和 hvals
hkeys hashkey
// 返回所有的key值hvals hashkey
// 返回所有的value- 如果value有相同的也不会去重;
127.0.0.1:6379> hkeys hashkey
1) "name"
2) "age"
3) "address"
4) "birthday"
127.0.0.1:6379> hvals hashkey
1) "tom"
2) "20"
3) "BeiJing"
4) "2000-01-01"
127.0.0.1:6379> hset hashkey info BeiJing
(integer) 1
127.0.0.1:6379> hvals hashkey
1) "tom"
2) "20"
3) "BeiJing"
4) "2000-01-01"
5) "BeiJing"
hincrby
与 hincrbyfloat
hincrby hashkey key num
// 对hash中key对应的value值加numhincrbyfloat hashkey key float
// 添加小数- 如果key对应的value不是数字,则返回错误
127.0.0.1:6379> hget hashkey age
"25"
127.0.0.1:6379> hincrby hashkey age 5
(integer) 30
127.0.0.1:6379> hincrby hashkey name 5
(error) ERR hash value is not an integer
127.0.0.1:6379> hset hashkey score 90
(integer) 1
127.0.0.1:6379> hget hashkey score
"90"
127.0.0.1:6379> hincrbyfloat hashkey score 2.5
"92.5"
hsetnx hashkey key value
- 作用:如果hash中不存在key则添加key-value对,如果存在则不添加;
127.0.0.1:6379> hget hashkey name
"tom"
127.0.0.1:6379> hget hashkey work
(nil)
127.0.0.1:6379> hsetnx hashkey name xxx
(integer) 0
127.0.0.1:6379> hget hashkey name
"tom"
127.0.0.1:6379> hsetnx hashkey work IT
(integer) 1
127.0.0.1:6379> hget hashkey work
"IT"