Redis数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

  • string是redis最基本的数据类型,与Memcached一模一样的类型,一个key对应一个value。
  • string类型是二进制安全的。即redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
  • string类型的一个键最大能存储512MB。
  • 常用操作命令:get、set、incr、decr mget

示例:

127.0.0.1:6379> set name "yanfadi"
OK
127.0.0.1:6379> get name
"yanfadi"

Hash(哈希)

  • hash是一个键值对集合。
  • hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
  • 每个 hash 可以存储 232 - 1 键值对(40多亿)。
  • 常用操作命令:hget、hset、hgetall、hmset

示例:

127.0.0.1:6379> hmset user:1 username yanfadi password yanfadi points 500
OK
127.0.0.1:6379> hgetall user:1
1) "username"
2) "yanfadi"
3) "password"
4) "yanfadi"
5) "points"
6) "500"

List(列表)

  • 列表是简单的字符串列表,按照插入顺序排序。
  • 可以添加一个元素到列表的头部(左边)或者尾部(右边)。
  • 列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
  • 常用操作命令:push、rpush、lpop、rpop、lrange、BLPOP(阻塞版)

示例:

127.0.0.1:6379> lpush yanfadi redis
(integer) 1
127.0.0.1:6379> lpush yanfadi memcached
(integer) 2
127.0.0.1:6379> lpush yanfadi shell
(integer) 3
127.0.0.1:6379> lrange yanfadi 0 10
1) "shell"
2) "memcached"
3) "redis"
127.0.0.1:6379>

Set(集合)

  • set是string类型的无序集合。
  • set是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
  • 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
  • 常用操作命令: sadd、srem、spop、sdiff、smembers、sunion

示例:

127.0.0.1:6379> sadd yanfadi.com redis
(integer) 1
127.0.0.1:6379> sadd yanfadi.com memcached
(integer) 1
127.0.0.1:6379> sadd yanfadi.com shell
(integer) 1
127.0.0.1:6379> smembers yanfadi.com
1) "redis"
2) "shell"
3) "memcached"
127.0.0.1:6379>

Zset(sorted set:有序集合)

  • zset和set一样也是string类型元素的集合,且不允许重复的成员。
  • 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
  • zset的成员是唯一的,但分数(score)却可以重复。
  • 常用操作命令: zadd、zrange、zrem、zcard

示例:

127.0.0.1:6379> zadd yanfadi 0 redis
(integer) 1
127.0.0.1:6379> zadd yanfadi 0 memcached
(integer) 1
127.0.0.1:6379> zadd yanfadi 0 shell
(integer) 1
127.0.0.1:6379> zrangebyscore yanfadi 0 100
1) "memcached"
2) "redis"
3) "shell"
127.0.0.1:6379>