Redis数据类型

290 阅读4分钟
Redis的五大数据类型:StringListSetHashZset

String类型

String是redis最基本的类型,可以理解与Memcached一模一样的类型,一个key对应一个value。
String类型是二进制安全的,redis的String可以包含任何数据,比如jpg图片或者序列化的对象。
String类型是Redis最基本的类型,一个redis的字符串value最多可以是512M。

Hash类型

Redis Hash是一个键值对集合。
Redis Hash是一个String类型的field和value的映射表,特别适合用于存储对象,类似Java里面的Map<String, Object>。

List类型

Redis List是简单的字符串列表,按照插入顺序排序,你可以再列表的头部(左边)或者尾部(右边)添加元素,它的底层实现是个链表。

Set类型

Redis SetString类型的无序集合,它是通过HashTable来实现的。

Zset类型(sorted set)

Redis Zset和Set都是String类型元素的集合,切不允许重复的元素,不同的是Zset的每一个元素都会关联一个double类型的分数,Redis正是通过分数来为集合中的元素进行从小到大的排序,Zset的元素是唯一的,但分数却可以重复。

Redis键(key)

常用命令

  • keys *, 列举当前数据库中的所有key值
  • exists keyname, 判断当前库中是否存在这个key
  • move key DBNumber, 将当前库中的key以及对应的value剪切到另外一个库中(DBNumber :0-15)
  • expire key seconds, 为给定的key设置过期时间
  • ttl key, 查看还有多少秒过期,-1表示永不过期,-2表示已经过期
  • type key, 查看key的类型

Redis字符串(String)

常用命令

  • set/get/del/append/strlen
  • incr/decr/incrby/decrby, 一定要是数字才能进行运算
  127.0.0.1:6379[6]> get k2
  "v2aaa"
  127.0.0.1:6379[6]> incr k2
  (error) ERR value is not an integer or out of range
  127.0.0.1:6379[6]> set k1 1
  OK
  127.0.0.1:6379[6]> incr k1
  (integer) 2
  127.0.0.1:6379[6]> decr k1
  (integer) 1
  127.0.0.1:6379[6]> incrby k1 10
  (integer) 11
  127.0.0.1:6379[6]> decrby k1 9
  (integer) 2
  127.0.0.1:6379[6]> type k1
  string
  • getrange/setrange: getrange key start end, setrange key offset value
  127.0.0.1:6379[6]> set k1 "1234567890"
  OK
  127.0.0.1:6379[6]> getrange k1 0 -1
  "1234567890"
  127.0.0.1:6379[6]> setrange k1 5 000
  (integer) 10
  127.0.0.1:6379[6]> getrange k1 0 -1
  "1234500090"
  • setex/setnx: setex key seconds value, setnx key value
  127.0.0.1:6379[6]> setex k2 100 v2
  OK
  127.0.0.1:6379[6]> setnx k2 3
  (integer) 0
  127.0.0.1:6379[6]> ttl k2
  (integer) 86
  127.0.0.1:6379[6]> get k2
  "v2"
  • mset/mget/msetnx: mset key value [key value ...], mget key [key ...], msetnx key value [key value ...]
  127.0.0.1:6379[6]> mset k1 v1 k2 v2 k3 v3 k4 v4
  OK
  127.0.0.1:6379[6]> mget k1 k2 k3 k4 k5
  1) "v1"
  2) "v2"
  3) "v3"
  4) "v4"
  5) (nil)
  • getset: getset key value

Redis列表(List)

常用命令

  • lpush/rpush/lrange: lpush/rpush key value [value ...], lrange key start stop
  127.0.0.1:6379[6]> lpush l1 1 2 3 4 5
  (integer) 5
  127.0.0.1:6379[6]> rpush l1 6 7 8 9
  (integer) 9
  127.0.0.1:6379[6]> lrange l1 0 -1
  1) "5"
  2) "4"
  3) "3"
  4) "2"
  5) "1"
  6) "6"
  7) "7"
  8) "8"
  9) "9"
  • lpop/rpop: lpop/rpop key
  • lindex: lindex key index
  127.0.0.1:6379[6]> lindex l1 0
  "5"
  • llen:
  • lrem: lrem key count value
  127.0.0.1:6379[6]> lrem l1 2 1
  (integer) 1
  127.0.0.1:6379[6]> lrange l1 0 -1
  1) "5"
  2) "4"
  3) "3"
  4) "2"
  5) "6"
  6) "7"
  7) "8"
  8) "9"
  • ltrim: ltrim key start stop,截取指定范围的值后在赋值给key
  127.0.0.1:6379[6]> lpush l2 1 2 3 4 5 6 7 8 9
  (integer) 9
  127.0.0.1:6379[6]> ltrim l2 2 7
  OK
  127.0.0.1:6379[6]> lrange l2 0 -1
  1) "7"
  2) "6"
  3) "5"
  4) "4"
  5) "3"
  6) "2"
  • rpoplpush: rpoplpush source destination

Redis集合(Set)

常用命令

  • sadd/smembers/sismember: sadd key member [member ...], smembers key, sismember key member
  127.0.0.1:6379[6]> sadd s1 1 2 3 4 5 6
  (integer) 6
  127.0.0.1:6379[6]> smembers s1
  1) "1"
  2) "2"
  3) "3"
  4) "4"
  5) "5"
  6) "6"
  127.0.0.1:6379[6]> sismember s1 7
  (integer) 0
  127.0.0.1:6379[6]> sismember s1 6
  (integer) 1
  • scard: scard key, 获取集合里面元素的个数
  • srem: srem key member [member ...]
  • srandmember: srandmember key [count]
  127.0.0.1:6379[6]> srandmember s1 2
  1) "2"
  2) "5"
  • spopspop key [count],随机出栈若干个元素
  • smove: smove source destination member
  • sdiff: sdiff key [key ...]
  • sinter: sinter key [key ...]
  • sunion: sunion key [key ...]

Reids哈希(Hash)

常用命令

  • hset/hget/hmset/hmget/hgetall/hdel:
  127.0.0.1:6379[6]> hset h1 f1 v1
  (integer) 1
  127.0.0.1:6379[6]> hget h1 f1
  "v1"
  127.0.0.1:6379[6]> hmset h1 f2 v2 f3 v3
  OK
  127.0.0.1:6379[6]> hmget h1 f1 f2
  1) "v1"
  2) "v2"
  127.0.0.1:6379[6]> hgetall h1
  1) "f1"
  2) "v1"
  3) "f2"
  4) "v2"
  5) "f3"
  6) "v3"
  127.0.0.1:6379[6]> hdel h1 f3
  (integer) 1
  • hlen
  • hexists: hexists key field
  • hkeys
  • kvals
  • hincrby/hincrbyfloat: hincrby key field increment, hincrbyfloat key field increment
  • hsetnx: hsetnx key field value

Reids有序集合(Zset)

常用命令

  • zadd/zrange: zadd key [NX|XX] [CH] [INCR] score member [score member ...], zrange key start stop [WITHSCORES]
  127.0.0.1:6379[6]> zadd zs 1 a 2 b 3 c
  (integer) 3
  127.0.0.1:6379[6]> zrange zs 0 -1
  1) "a"
  2) "b"
  3) "c"
  • zrangebyscore: zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
  127.0.0.1:6379[6]> zrangebyscore zs 1 3 withscores
  1) "a"
  2) "1"
  3) "b"
  4) "2"
  5) "c"
  6) "3"
  • zrem: zrem key member [member ...]
  • zcard/zcount: zcard key, zcount key min max
  • zrank/zrevrank: zrank key member, zrevrank key member
  127.0.0.1:6379[6]> zrank zs a
  (integer) 0
  127.0.0.1:6379[6]> zrevrank zs a
  (integer) 2
  • zrevrange/zrevrangebyscore: zrevrange key start stop [WITHSCORES], zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]