Redis 基本数据类型

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

redis类型 含义
String 字符串
Hash 哈希
List 列表
Set 集合
Sorted set 有序集合

String 字符串

string是redis最基本的类型,一个key对应一个value。

string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

  1. redis 127.0.0.1:6379> SET name "itcast"
  2. OK
  3. redis 127.0.0.1:6379> GET name
  4. "itcast"
  5. 127.0.0.1:6379> type name
  6. string

删除键值

  1. redis 127.0.0.1:6379> del name

删除这个 key 及对应的 value

验证键是否存在

  1. redis 127.0.0.1:6379> exists name
  2. (integer) 0

在上面的例子中,SET 和 GET 是 Redis STRING命令,nameitcast 是存储在 Redis 的键和字符串值。

Hash 哈希

Redis hash 是一个键值对集合。

Redis hash是一个string类型的fieldvalue的映射表,hash特别适合用于存储对象。

  1. 127.0.0.1:6379> HMSET my_hash_table username itcast age 18 sex male
  2. OK
  3. 127.0.0.1:6379> HGETALL my_hash_table
  4. 1) "username"
  5. 2) "itcast"
  6. 3) "age"
  7. 4) "18"
  8. 5) "sex"
  9. 6) "male"

在上面的例子中,哈希数据类型用于存储包含用户基本信息的用户对象。

这里 HSET,HGETALL 是 Redis HASHES命令, 同时 my_hash_table 也是一个键。

List 列表

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

  1. redis 127.0.0.1:6379> lpush tutorial_list redis
  2. (integer) 1
  3. redis 127.0.0.1:6379> lpush tutorial_list mongodb
  4. (integer) 2
  5. redis 127.0.0.1:6379> lpush tutorial_list rabbitmq
  6. (integer) 3
  7. redis 127.0.0.1:6379> lrange tutorial_list 0 10
  8. 1) "rabitmq"
  9. 2) "mongodb"
  10. 3) "redis"

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

Set 集合

Redis Set是string类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

在 Redis 可以添加,删除和测试成员存在的时间复杂度为 O(1)。

  1. 127.0.0.1:6379> sadd myset redis
  2. (integer) 1
  3. 127.0.0.1:6379> sadd myset mongodb
  4. (integer) 1
  5. 127.0.0.1:6379> sadd myset rabitmq
  6. (integer) 1
  7. 127.0.0.1:6379> sadd myset rabitmq
  8. (integer) 0
  9. 127.0.0.1:6379> smembers myset
  10. 1) "mongodb"
  11. 2) "redis"
  12. 3) "rabitmq"

注:在上面的例子中 rabitmq 被添加两次,但由于它是只集合具有唯一特性。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数(权重)。redis正是通过分数来为集合中的成员(权重)进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

  1. 127.0.0.1:6379> zadd mysortset 0 redis
  2. (integer) 1
  3. 127.0.0.1:6379> zadd mysortset 2 mongodb
  4. (integer) 1
  5. 127.0.0.1:6379> zadd mysortset 1 rabitmq
  6. (integer) 1
  7. 127.0.0.1:6379> ZRANGEBYSCORE mysortset 0 1000
  8. 1) "redis"
  9. 2) "rabitmq"
  10. 3) "mongodb"

全部数据类型相关操作指令在 http://redis.cn/commands.html有详细介绍

原文: https://piaosanlang.gitbooks.io/redis/content/01day/README2.html