Redis 数据类型
Redis 数据类型
Redis支持5种类型的数据类型。
字符串
Redis字符串是一个字节序列,Redis中的字符串是二进制安全的,这意味着Redis的字符串可以包含任何数据,比如jpg图片或者序列化的对象 。因此,您可以在一个字符串中存储多达512MB的内容。
例子
redis 127.0.0.1:6379> SET name "kaifaxueyuan" OK redis 127.0.0.1:6379> GET name "kaifaxueyuan"
在上面的示例中,SET和GET是Redis命令,name是在Redis中使用的key,kaifaxueyuan是存储在Redis中的字符串值。
注:字符串值最多可以为512MB。
Hash(哈希)
Redis哈希是键值对的集合。Redis散列在字符串字段和字符串值之间映射。因此,它们用于表示对象。
例子
redis 127.0.0.1:6379> HMSET user:1 username kaifaxueyuan password kaifaxueyuan points 200 OK redis 127.0.0.1:6379> HGETALL user:1 1) "username" 2) "kaifaxueyuan" 3) "password" 4) "kaifaxueyuan" 5) "points" 6) "200"
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HGETALL 命令,user:1 为键值。
每个哈希可以存储多达超过40亿(4294967295)个键值对。
List(列表)
Redis列表是字符串的列表,按插入顺序排序,可以将元素添加到Redis列表的头部或尾部中。
例子
redis 127.0.0.1:6379> lpush kaifaxueyuan redis (integer) 1 redis 127.0.0.1:6379> lpush kaifaxueyuan mongodb (integer) 2 redis 127.0.0.1:6379> lpush kaifaxueyuan rabitmq (integer) 3 redis 127.0.0.1:6379> lrange kaifaxueyuan 0 10 1) "rabitmq" 2) "mongodb" 3) "redis"
列表最多可存储超过40亿个(4294967295)元素。
Set(集合)
Redis集合是一个无序的字符串集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。。
sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
例子
redis 127.0.0.1:6379> sadd kaifaxueyuan redis (integer) 1 redis 127.0.0.1:6379> sadd kaifaxueyuan mongodb (integer) 1 redis 127.0.0.1:6379> sadd kaifaxueyuan rabitmq (integer) 1 redis 127.0.0.1:6379> sadd kaifaxueyuan rabitmq (integer) 0 redis 127.0.0.1:6379> smembers tutoriallist 1) "rabitmq" 2) "mongodb" 3) "redis"
注意-在上面的示例中,rabitmq是两次添加的,但是由于集合的唯一属性,它只添加一次。
每个集合中的最大成员数超过40亿(4294967295)。
zset(sorted set:有序集合)
Redis有序集合类似于Redis集合。不同的是,有序集合的每个成员都与一个分数(double类型)相关联,用于从最小到最大排序。虽然成员是独一无二的,但分数可能会重复。
例子
redis 127.0.0.1:6379> zadd tutoriallist 0 redis (integer) 1 redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb (integer) 1 redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq (integer) 1 redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq (integer) 0 redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000 1) "redis" 2) "mongodb" 3) "rabitmq"