一、Redis数据类型
redis支持五种数据类型,String(字符串),Hash(哈希),List(列表),Site(集合),Sorted site(有序集合)。
String(字符串)
string是Redis最基本的数据类型,类似于memcache的key=>value形式。
string是二进制安全的。即string可以包含任何数据,如图片或者序列化的对象。
string是Redis最基本的数据类型,一个键最大能存储512M。
实例:
redis 127.0.0.1:6379> SET name "test"
OK
redis 127.0.0.1:6379> GET name
test
Hash(哈希)
hash是一个键值对(key => value)的集合,是一个 string 类型的 field 和 value 的映射表(可以想象一下MySQL的表的形式),适用于存储对象
例:
redis> HMSET myhash field1 "Hello" field2 "World"
OK
redis> HMGET myhash field1
"Hello"
redis> HMGET myhash field2
"World"
每个 hash 可以存储 键值对。
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部或者尾部(LPUSH/RPUSH),或者从列表的头部或者尾部取出一个元素(LPOP/RPOP)。
实例
redis 127.0.0.1:6379> lpush test 1
(integer) 1
redis 127.0.0.1:6379> lpush test 2
(integer) 1
redis 127.0.0.1:6379> lpush test 3
(integer) 1
redis 127.0.0.1:6379> lrange 0 10
1) "1"
2) "2"
3) "3"
列表最多存储 个元素。
Set(集合)
Redis 的 set 是 string 的无序集合,不会存在重复的元素。
集合是通过 hash 表实现的,添加、删除、查找的复杂度都是O(1)。
sadd命令
添加一个元素到 key 对应的 set 集合中,成功则返回1,如果元素已存在集合中则返回 0,如果 key 对应的 set 不存在,则返回 错误。
sadd key member
实例:
redis 127.0.0.1:6379> sadd test 'a'
(integer) 1
redis 127.0.0.1:6379> sadd test 'b'
(integer) 1
redis 127.0.0.1:6379> sadd test 'c'
(integer) 1
redis 127.0.0.1:6379> sadd test 'c'
(integer) 0
redis 127.0.0.1:6379> smembers test
1) "a"
2) "b"
3) "c"
集合中最大成员数 。
Sorted set(有序集合)
string 类型元素的有序集合,是 set 的有序形式。
每个元素都会关联一个 double 类型的分数。Redis 通过分数来为集合中的成员进行从小到大的排序。Sorted set的成员不能重复,但是分数(score)可以重复。
zadd
添加元素到集合,元素在集合中则更新对应的 score
zadd key score member
实例:
redis 127.0.0.1:6379> zadd test 0 a
(integer) 1
redis 127.0.0.1:6379> zadd test 1 b
(integer) 1
redis 127.0.0.1:6379> zadd test 2 c
(integer) 1
redis 127.0.0.1:6379> zadd test 2 c
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE test 0 1000
1) a
2) b
3) c
ZRANGEBYSCORE 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
网友评论