2、Redis数据类型

传统的key-value是指支持使用一个key字符串来索引value字符串的存储,而Redis中的value不仅仅支持字符串,还支持更多的复杂结构,包括列表,集合,哈希表等。

1. Redis strings

字符串是一种最基本的Redis值类型。一个Redis字符串能包含任意类型的数据,例如: 一张JPEG格式的图片或者一个序列化的Ruby对象。一个字符串类型的值最多能存储512M字节的内容。

$ sudo service redis-server start
$ redis-cli
> set mykey somevalue
> get mykey

可以SETGET命令来创建和检索strings,SET命令将取代现有的任何已经存在的key。
SET命令还提供附加参数的选项.

> set mykey newval nx  //只有在没有相同key的情况下成功
> set mykey newval xx  //只有在有相同key的情况下成功

其他操作:

> set counter 100  //设置初始值
> 
> incr counter  //让value成为整数,并自增
> incrby counter 50   //加法
> 
> decr counter  //让value成为整数,并自减
> 
> mset a 10 b 20 c 30  //一次性的完成多个key-value的对应关系
> mget a b c   //返回一个value数组

2. Redis lists

Redis列表是简单的字符串列表,按照插入顺序排序。
LPUSH 命令插入一个新的元素到头部,RPUSH插入一个新元素到尾部。
当一个这两个操作在一个空的Key上被执行的时候一个新的列表被创建。
如果清空一个列表那么对应的key将被从key空间删除。

> rpush mylist A
> rpush mylist B
> lpush mylist first
> lrange mylist 0 -1
1)"first"
2)"A"
3)"B"

注意:LRANGE 利用了两个检索值,0表示list的开头第一个,-1表示list的倒数第一个。

POP命令可以选择不同的方向取出元素,POP命令返回值为取出的元素。

3. Redis hashes

Redis Hashes是字符串字段和字符串值之间的映射。可以存储数以百万计的对象在一个小的Redis实例中。

> hmset user:1000 username antirez birthyear 1977
> hget user:1000 username
"antirez"
> hget user:1000 birthyear
"1977"
> hgetall user:1000
1)"username "
2)"antirez"
3)"birthyear"
4)"1977"

HMSET命令设置一个多域的hash表,HGET命令获取指定的单域,HGETALL命令获取指定key的所有信息。HMGET类似于HGET,只是返回一个value数组。

> hmget user:1000 username birthyear no-such-field
1)"antirez"
2)"1977"
3)(nil)

可以根据需要对hash表的表项进行单独的操作,例如 HINCRBY

> hincrby user:1000 birthyear 10
(integer) 1987

4. Redis 无序集合(set)

Set是一个无序的字符串集合,可以以O(1)的时间复杂度完成添加,删除,以及测试元素是否存在。
Redis 集合不允许包含相同成员的属性,多次添加相同的元素,最终在集合里只会有一个元素。
可以在非常短的时间内进行合并(unions), 求交集(intersections),找出不同的元素(differences of sets)。

> sadd myset 1 2 3   //创建一个无序集合,返回集合元素个数
(integer) 3

> smembers myset   //查看集合
1)"1"
2)"2"
3)"3"

> sismember myset 3
(integer) 1
> sismember myset 30
(integer) 0
//`SISMEMBER`用于查看集合是否存在,匹配项包括集合名和元素个数。匹配成功返回1,匹配失败返回0

5. Redis 有序集合

Redis有序集合是一个没有重复元素的字符串集合。
有序集合的每一个成员都关联了一个评分,并按照从低到高的方式排序集合中的成员。
集合的成员是唯一的,但是评分可以是重复的。
有序集合可以以非常快的速度(O(log(N)))添加,删除和更新元素,也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。

ZADD创建有序集合,同时给定评分。
ZRANGE是查看正序的集合,ZREVRANGE是查看反序的集合,使用WITHSCORES 参数返回记录值。

> zadd hackers 1 "A"
> zadd hackers 3 "C"
> zadd hackers 2 "B"

> zrange hackers 0 -1
1)"A"
2)"B"
3)"C"
> zrange hackers 0 -1 withscores
1)"A"
2)"1"
3)"B"
4)"2"
5)"C"
6)"3"

你可能感兴趣的:(redis)