redis各种数据类型操作
一、有序集合
当value是有序set类型,命令包括zadd zrange
等。
-> redis 127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
-> redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
-> redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
-> redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
-> redis 127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
-> redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES
- "redis"
- "1"
- "mongodb"
- "2"
- "mysql"
- "4"
二、集合
当value是set类型,命令包括sadd smembers srem scard
等。
-> redis 127.0.0.1:6379> SADD runoobkey redis //在前面添加元素
(integer) 1
-> redis 127.0.0.1:6379> SADD runoobkey mongodb
(integer) 1
-> redis 127.0.0.1:6379> SADD runoobkey mysql
(integer) 1
-> redis 127.0.0.1:6379> SADD runoobkey mysql //没有成功添加,因为集合中已有mysql
(integer) 0
-> redis 127.0.0.1:6379> SMEMBERS runoobkey //展示key下所有的值
1) "mysql"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379> SCARD runoobkey //集合的长度
(integer) 3
redis 127.0.0.1:6379> SREM runoobkey mysql //移除集合中mysql这个存在的元素
(integer) 1
redis 127.0.0.1:6379> SREM runoobkey foo //移除集合中foo这个不存在的元素,移除失败
(integer) 0
redis 127.0.0.1:6379> SMEMBERS runoobkey
1) "mongodb"
2) "redis"
redis 127.0.0.1:6379> SCARD runoobkey //集合的长度
(integer) 2
三、列表
当value是list类型,命令包括rpush lpush llen lrange lpop rpop del
等。
-> rpush friends "Alice" // 在末尾追加
(integer) 1
-> rpush friends "Bob"
(integer) 2
-> lpush friends "Sam" // 插入到开头
(integer) 3
-> lrange friends 0 -1 // 返回列表的子集,类似切片操作
1) "Sam"
2) "Alice"
3) "Bob"
-> lrange friends 0 1
1) "Sam"
2) "Alice"
-> lrange friends 1 2
1) "Alice"
2) "Bob"
-> llen friends // 返回列表长度
(integer) 3
-> lpop friends // 删除并返回列表第一个元素
"Sam"
-> rpop friends // 删除并返回列表最后一个元素
"Bob"
-> lrange friends 0 -1
1) "Alice"
-> del friends // 删除key
(integer) 1 // 1表示成功,0表示失败
四、哈希
当value是hash类型,hash类型可以理解为字典,需要给value指定一个field用于映射,命令包括hset hmset hget hgetall hdel hincrby del hlen hkeys
等。
-> hset user:1000 name "John Smith" // 给value指定一个field,比如name
(integer) 1
-> hset user:1000 email "john.smith@example.com"
(integer) 1
-> hset user:1000 password "s3cret"
(integer) 1
-> hgetall user:1000 // 获得hash表中所有成员,包括field和value
1) "name"
2) "John Smith"
3) "email"
4) "john.smith@example.com"
5) "password"
6) "s3cret"
-> hkeys user:1001
1) "name"
2) "email"
3) "password"
-> hmset user:1001 name "Mary Jones" password "hidden" email
"mjones@example.com" // 设置多个field和value
OK
-> hget user:1001 name // 根据field获取value
"Mary Jones"
-> hset user:1000 visits 10 // field可以映射到数字值
(integer) 1
-> hincrby user:1000 visits 1 // 原子性增加value的值,增加1
(integer) 11
-> hincrby user:1000 visits 10 // 增加10
(integer) 21
-> hdel user:1000 visits // 删除field及其value
(integer) 1
-> hincrby user:1000 visits 1
(integer) 1
-> del user:1000 // 删除key
(integer) 1
redis统计某种类型的key出现的次数
单机
redis-cli -p 端口 -h IP地址 keys "*"| wc -l
集群
redis-cli -p 端口 -h IP地址 keys "*"| wc -l -c(集群多了个-c)
删除某种前缀开头的key
redis-cli -h IP地址 -p 端口 keys "*" | xargs redis-cli -h IP地址 -p 端口 DEL
五、字符串
当value是string类型,命令包括set get setnx incr del
等。
-> set server:name "fido" // 设置键值
OK
-> get server:name // 获取键值
"fido"
-> mget key1 key2... // 获取多个key的键值
-> setnx connections 10 // set if not exists
OK
-> incr connections // 原子性增加values值
(integer) 11
-> incr connections
(integer) 12
-> del connections // 删除key
(integer) 1
-> incr connections
(integer) 1