redis各种数据类型操作

2021-05-31  本文已影响0人  jinjin1009

一、有序集合
当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

  1. "redis"
  2. "1"
  3. "mongodb"
  4. "2"
  5. "mysql"
  6. "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

上一篇下一篇

猜你喜欢

热点阅读