Practical examples of the Redis

    2014年11月18日 doc Redis 字数:4563

Redis的基本结构

  • string类型

string类型是最简单的类型。一个key对应一个value。属于二进制安全类型。string可以包含任何数据,比如说jpg图片或者序列化的对象

  • list类型

头元素和尾元素

头元素指的是列表左端/前端第一个元素,尾元素指的是列表右端/后端第一个元素。

举个例子,列表list包含三个元素:x, y, z,其中x是头元素,而z则是尾元素。

空列表

指不包含任何元素的列表,Redis将不存在的key也视为空列表。

  • set类型

A = {‘a’, ‘b’, ‘c’} B = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’}

inter(x, y): 交集,在集合x和集合y中都存在的元素。 inter(A, B) = {‘a’}

union(x, y): 并集,在集合x中或集合y中的元素,如果一个元素在x和y中都出现,那只记录一次即可。 union(A,B) = {‘a’, ‘b’, ‘c’, ‘e’, ‘i’, ‘o’, ‘u’}

diff(x, y): 差集,在集合x中而不在集合y中的元素。 diff(A,B) = {‘b’, ‘c’}

card(x): 基数,一个集合中元素的数量。 card(A) = 3

空集: 基数为0的集合。

  • zset类型

  • hash类型

string类型操作

  • SET

解释:设置key对应的值为string类型的value
举例:添加一个name为豆毛的键值对’‘set name doumao’’

  • SETNX

解释:将key的值设为value,当且仅当key不存在 举例:SETNX names “doumao”

  • SETEX

解释:将值value关联到key,并将key的生存时间设为seconds(以秒为单位)。如果key 已经存在,SETEX命令将覆写旧值。 举例:SETEX cd 3000 “goodbye my love”

  • SETRANGE

解释:用value参数覆写(Overwrite)给定key所储存的字符串值,从偏移量offset开始。 举例:SETRANGE greeting 6 “Redis”

  • MSET

解释:同时设置一个或多个key-value对 举例:MSET date “2011.4.18” time “9.09a.m.”weather “sunny”

  • MSETNX

解释:同时设置一个或多个key-value对,当且仅当key不存在 举例:MSETNX rmdbs “MySQL” nosql “MongoDB” key-value-store “redis”

  • APPEND

解释:如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。如果key不存在,APPEND就简单地将给定key设为value,就像执行SETkey value一样。 举例:APPEND myphone “nokia”

  • GET

解释:返回key所关联的字符串值。如果key不存在则返回特殊值nil。假如key储存的值不是字符串类型,返回一个错误,因为GET只能用于处理字符串值。 举例:GET name

  • MGET

解释:返回所有(一个或多个)给定key的值。如果某个指定key不存在,那么返回特殊值nil。因此,该命令永不失败。 举例:MGET name twitter

  • GETRANGE

解释:GETRANGE key start end返回key中字符串值的子字符串,字符串的截取范围由start和end两个偏移量决定(包括start和end在内)。负数偏移量表示从字符串最后开始计数,-1表示最后一个字符,-2表示倒数第二个,以此类推。GETRANGE通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求。 举例:GETRANGE greeting 0 -1

  • GETSET

解释:GETSET key value将给定key的值设为value,并返回key的旧值。当key存在但不是字符串类型时,返回一个错误。 举例:GETSET mail xxx@google.com

  • STRLEN

解释:返回key所储存的字符串值的长度。当key储存的不是字符串值时,返回一个错误。不存在的key长度视为0 举例:STRLEN mykey

  • DECR

解释:将key中储存的数字值减一。如果key不存在,以0为key的初始值,然后执行DECR操作。 举例:DECR failure_times

  • DECRBY

解释:DECRBY key decrement将key所储存的值减去减量decrement。如果key不存在,以0为key的初始值,然后执行DECRBY操作。 举例:DECRBY count 20

  • INCR

解释:INCR key将key中储存的数字值增一。如果key不存在,以0为key的初始值,然后执行INCR操作。 举例:INCR page_view

  • INCRBY

解释:INCRBY key increment将key所储存的值加上增量increment。如果key不存在,以0为key的初始值,然后执行INCRBY命令。 举例:INCRBY rank 20

list类型操作

  • LPUSH

解释:LPUSH key value [value…]将一个或多个值value插入到列表key的表头。如果有多个value值,那么各个value值按从左到右的顺序依次插入到表头:比如对一个空列表(mylist)执行LPUSH mylist a b c,则结果列表为c b a,等同于执行执行命令LPUSH mylist a、LPUSH mylist b、LPUSH mylist c。如果key不存在,一个空列表会被创建并执行LPUSH操作。当key存在但不是列表类型时,返回一个错误。 举例:LPUSH mylist a b c

  • LPUSHX

解释:LPUSHX key value将值value插入到列表key的表头,当且仅当key存在并且是一个列表。和LPUSH命令相反,当key不存在时,LPUSHX命令什么也不做。 举例:LPUSHX greet “hello”

  • RPUSH

解释:RPUSH key value [value…]将一个或多个值value插入到列表key的表尾。如果有多个value值,那么各个value值按从左到右的顺序依次插入到表尾:比如对一个空列表(mylist)执行RPUSH mylist a b c,则结果列表为a b c,等同于执行命令RPUSH mylist a、RPUSH mylist b、RPUSH mylist c。 举例:RPUSH mylist a b c

  • RPUSHX

解释:RPUSHX key value将值value插入到列表key的表尾,当且仅当key存在并且是一个列表。 举例:RPUSHX greet “hello”

  • LPOP

解释:LPOP key移除并返回列表key的头元素。 举例:LPOP name

  • RPOP

解释:移除并返回列表key的尾元素。当key不存在时,返回nil 举例:RPOP mylist

  • LLEN

解释:返回列表key的长度。 举例:LLEN name

  • LRANGE

解释:返回列表key中指定区间内的元素,区间以偏移量start和stop指定 举例:LRANGE key start stop

  • LREM

解释:根据参数count的值,移除列表中与参数value相等的元素。count的值可以是以下几种: count > 0: 从表头开始向表尾搜索,移除与value相等的元素,数量为count。 count < 0: 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。 count = 0: 移除表中所有与value相等的值。 举例:LREM greet 2 morning

  • LSET

解释:将列表key下标为index的元素的值甚至为value。 举例:LSET key index value

  • LINDEX

解释:返回列表key中,下标为index的元素。 举例:LINDEX key index

  • LINSERT

解释:将值value插入到列表key当中,位于值pivot之前或之后。 举例:LINSERT key BEFORE|AFTER pivot value

set类型操作

  • SADD

解释:将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。 举例:SADD bbs “tianya.cn” “groups.google.com”

  • SREM

解释:移除集合key中的一个或多个member元素,不存在的member元素会被忽略。 举例:SREM languages ruby

  • SMEMBERS

解释:返回集合key中的所有成员。 举例:SMEMBERS programming_language

  • SISMEMBER

解释:判断member元素是否是集合key的成员。 举例:SISMEMBER joe’s_movies “Fast Five”

  • SCARD

解释:返回集合key的基数(集合中元素的数量) 举例:SCARD tool

  • SMOVE

解释:将member元素从source集合移动到destination集合 举例:SMOVE source destination member

  • SPOP

解释:移除并返回集合中的一个随机元素 举例:SPOP my_sites

  • SRANDMEMBER

解释:返回集合中的一个随机元素。 举例:SRANDMEMBER key

zset类型操作

  • ZADD

解释:将一个或多个member元素及其score值加入到有序集key当中 举例:ZADD key score member

  • ZREM

解释:移除有序集key中的一个或多个成员,不存在的成员将被忽略 举例:ZREM key member [member …]

  • ZCARD

解释:返回有序集key的基数 举例:ZCARD key

  • ZCOUNT

解释:返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员 举例:ZCOUNT key min max

  • ZSCORE

解释:返回有序集key中,成员member的score值 举例:ZSCORE key member

  • ZINCRBY

解释:为有序集key的成员member的score值加上增量increment。 举例:ZINCRBY key increment member

  • ZRANGE

解释:返回有序集key中,指定区间内的成员 举例:ZRANGE key start stop [WITHSCORES]

  • ZRANK

解释:返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列 举例:ZRANK key member

hash类型操作

  • HSET

解释:将哈希表key中的域field的值设为value。 举例:HSET key field value

  • HSETNX

解释:将哈希表key中的域field的值设置为value,当且仅当域field不存在。 举例:HSETNX key field value

  • HMSET

解释:同时将多个field - value(域-值)对设置到哈希表key中。 举例:HMSET key field value [field value …]

  • HGET

解释:返回哈希表key中给定域field的值 举例:HGET key field

  • HMGET

解释:返回哈希表key中,一个或多个给定域的值。 举例:HMGET key field [field …]

  • HGETALL

解释:返回哈希表key中,所有的域和值 举例:HGETALL key

  • HDEL

解释:删除哈希表key中的一个或多个指定域,不存在的域将被忽略 举例:HDEL key field [field …]

  • HLEN

解释:返回哈希表key中域的数量。 举例:HLEN key

  • HEXISTS

解释:查看哈希表key中,给定域field是否存在。 举例:HEXISTS key field

  • HINCRBY

解释:为哈希表key中的域field的值加上增量increment。 举例:HINCRBY key field increment

  • HKEYS

解释:返回哈希表key中的所有域。 举例:HKEYS key

  • HVALS

解释:返回哈希表key中的所有值。 举例:HVALS key