1.字符串(string)
说明:redis字符串是字节序列,而且512兆为上限。mysql
a.设置redis
(1).set:设置字符串,设置成功则返回“OK”;
例如:set name "xjb" ;sql
(2).setnx:若是key存在,则设置失败,返回0;key不存在,就会设置成功,返回1;
例如:setnx name "xjb";app
(3).setex:设置key的对应的string值,并指定有效期.若是没有指定,则永久有效;
例如:setex hairColor 10 "red";测试
(4).setrange:将指定的字符串的子字符串从指定位置替换为被指定的字符串。若是被指定的字符串长度不够,则只替换被指定字符串的长度,剩余的长度仍是继续拼接下去;
例如:setrange email 6 "qq.com"对象
(5).mset:一次设置多个key的值,成功返回“OK”表示全部的值都设置成功了;失败则返回0,表示全部的值都没有被设置;
例如:mset key1 xjb1 key2 xjb2 key3 xjb3blog
(6).msetnx:一次设置多个key的值,成功返回ok表示全部的值都设置了,失败返回0表示没有任何值被设置,但不会覆盖已经存在的key.
例如:msetnx key1 xjb1 key2 xjb2 key3 xjb3 排序
b.获取
(1).get:获取设置了key的值,成功则返回设置了的值;失败则返回nil;
例如:get name
(2).getset:设置新值,并获取旧值;
例如:getset name索引
(3).getrange:获取指定key指定范围的子字符串;
例如:getrange key2 0 5three
(4).mget批量获取;
例如:mget key1 key2 key6 key7
(5).incr:对指定的key自增1;
例如:incr key6
(6).incrby:对指定的key自增指定的值,若是key不存在,则设置key为0再自增。增量设置为正数则加,设置为负数则减;
例如:incrby key2 7
(7).decr:对指定的key自减1;
(8).descby:对指定的key自增指定的值,若是key不存在,则设置key为0再自减。增量设置为正数则加,设置为负数则加;
(9).append:给指定key的值追加被指定的字符串,并放回key的新值的长度(字符串拼接);
例如:append key gmail.com
(10).strlen:返回指定key的值得长度;
例如:strlen name;
(11).expire:设置指定key的过时时间;
例如:expire key 30;
2.哈希(hash)
说明:redis的哈希是键值对的集合;redis的哈希是字符串字段和字符值之间的映射,他的添加和删除都是0和1(平均操做),被用来表示对象。
a.设置
(1).hset:设置一个哈希表,若是key不存在,则先建立;
例如:hset user:001 name lijie
(2).hsetnx:设置hash field为指定值,若是key存在,则返回0;若是key不存在,则先建立;
例如:hsetnx myhash name lijie
(3).hmset:批量设置多个值;
例如:hmset user:001 username xjb pwd xjb desc xjb
hmset user:002 username xjb2 pwd xjb2 desc xjb2
(4).hincrby:获取指定key的值并自增指定的步长,而后返回增长后的值;
例如:hincrby user:003 age 8
(5).hexists:测试指定字段是否存在,存在则返回1,不存在就返回0;
例如:hexists user:003 age
(6).hdel:删除指定key的值,成功则返回1;失败返回0;
例如:hdel user:003 xjb (没有hdel user:003的用法)
b.获取:
(1).hget:获取一个哈希表指定字段的值,若是成功,则返回对应值;若是失败,则返回nil;
例如:hget user:001 name
(2).hmget:批量获取指定key的值;
例如:hmget user:001 name age
(3).hlen:获取指定字段的数量;
例如:hlen user:003
(4).hkeys:返回指定的字段名:
例如:hkeys user:001
(5).hvals:返回指定哈希表中的指定的值;
例如:hvals user:001
(6).hgetall:返回指定哈希表中全部的key和value:
例如:hgetall user:001
3.链表(list):
说明:主要功能是push、pop、获取一个范围的全部值;redis的list类型是一个每一个子元素都是string类型的双向链表;咱们能够经过push、pop从链表的头部或者尾部添加删除元素,这样list既能够做为栈(先进后出:试管),又能够做为队列(先进先出:管道)。
a.设置
(1).lpush:向队列头部压入一个元素;
例如:lpush list1 "hello"
(2).lpushx:向队列头部压入一个元素,当且仅当队列存在;若是队列不存在,lpushx什么不作;
例如:lpushx list1 "hello"
(3).rpush;向队列尾部压如一个元素;
例如:rpush list2 "word"
(4).rpushx:向队列尾部部压入一个元素,当且仅当队列存在;若是队列不存在,lpushx什么不作;
例如:lpushx list2 "hello"
(5).linsert:在指定的前面或者后面压入一个元素,并返回列表中列表的个数;
例如:linsert list3 before world wrong
linsert list3 after world test
(6).lset:将列表中指定下标元素的元素替换掉;
例如:lset list3 3 "test"
(7).lrem:将列表中指定元素的n个指定的元素值,并返回删除的指定元素的个数;
例如:lrem list3 2 "test"
(8).ltrim:保留指定范围的元素(删除其余元素);
例如:ltrim list3 1 -1
说明:后面的两个数是指定保留范围;
(9).lpop:从链表的头部弹出(删除)元素,并返回弹出删除的元素;
例如:lpop list3
(10).lpop:从链表的尾部弹出(删除)元素,并返回弹出删除的元素;
例如:rpop list3
(11).rpoplpush:弹出第一个列表中的最后一个元素,添加到第二个列表中第一个元素;
例如:rpoplpush list3 list4
(12).linindex:返回指定链表中指定索引位置的元素;
例如:linindex list3 3
(13).llen:返回指定链表中元素的个数;
例如:llen list3
b.获取
(1).lrange:获取指定范围的元素;
例如:lpush list1 0 -1
4.无序集合(set)
说明:它是string类型的无序集合,它的添加、删除和查找复杂度都是0和1,操做它能够去交集、并集、差集;这些操做能够实现sns中的好友推荐和blog中的tag功能。
a.设置
(1).sadd:向集合中添加一个或者多个元素,添加成功则返回1,失败则返回0;
例如:sadd myset1 one two three
说明:不能够重复添加一样的元素;
(2).srem:删除集合中的一个元素,删除成功则返回1,失败则返回0;
例如:srem myset2 one
(3).spop:从集合中随机弹出(删除)一个元素;
例如:spop myset2
(4).sdiff:获取两个集合的差集;
例如:sdiff myset1 myset2
说明:以在前面的集合为标准。
(5).sdiffstore:将两个集合的差集存贮到一个新的集合中;
例如:sdiffstore myset3 myset1 myset2
说明:将集合myset1和myset2的差集存储到myset3中
(6).sinter:返回全部给定集合的交集;
例如:sinter myset1 myset2
(7).sinterstore:将两个集合的交集存贮到一个新的集合中;
例如:sinterstore myset4 myset1 myset2
说明:将集合myset1和myset2的差集存储到myset4中
(8).sunion:返回全部给定集合的并集;
例如:sunion myset1 myset2
(9).sunionstore:将指定集合的并集存贮到新的集合中,并放回并集元素的个数;
例如:sunion myset5 myset1 myset2
(10).smove:将一个集合中指定元素移除到另外一个指定集合中;
例如:sunion myset1 myset6 three
说明:将myset1的中的three元素移除,并添加到myset6中
(11).scard:返回指定集合的元素的个数;
例如:scard myset2
(12).sismember:判断某个元素是不是指定集合的元素,是就返回1,否就返回0;
例如:sismember myset1 three
(13).srandmember:随机返回指定集合的一个元素,可是不删除元素;
例如:srandmember myset3
b.获取
(1).smumbers:获取某个集合中全部的元素;
例如:smembers myset1 one
5.有序集合(zset)
说明:它在无序集合的基础上增长了一个顺序属性,这个属性在添加修改元素的时候能够指定,每次制定后,zset会自动从新按新的值调准顺序;能够理解为有两列的mysql表,一列存value,一列存顺序。
a.设置
(1).zadd:向指定的集合中添加顺序和值;
例如:zadd myzset1 1 one
(2).zrem:删除指定集合中指定的元素
例如:zrem myzset two
(3).zincrdy:若是在名称为key的zset中已经存在元素member,则该元素的score(序列号)增长increment;不然向该集合中增长该元素,其score(序列号)的值为increment.最终都返回该指定元素的序列号。
例如:zincrby myzset1 -2 one
说明:将myzet中的one元素的序列号减小2;
(4).zrank:先把集合按score升序排序,并返回排序后指定集合中的元素的score(序列号)(执行完后排序不保留)
例如:zrank myzset1 one(从0开始)
(5).zrank:先把集合按score降序排序,并返回排序后指定集合中的元素的score(序列号)(执行完后排序不保留)
例如:zrank myzset1 one(从0开始)
b.获取
(1).zrange:获取指集合的元素值(升序);
例如:zrange myzset1 0 -1 withscores;//获取myzset1集合的全部元素,并显示集合
zrange myzset1 0 -1;//获取myzset集合的全部元素,不显示集合
(2).zrevrange:获取指集合的元素值(降序);
例如:zrevrange myzset1 0 -1
(3).zrangebyscore:获取指定score的值;
例如:zrangebyscore myzset 2 3 withscore
(4).zcount:获取指定区间元素的个数;
例如:zcount myzsset 2 6
(5).zcard:返回集合中素有元素的个数;
例如:zcard myzset
(6).zremrangebyrank:删除集合指定范围的元素,并返回删除了元素的个数(按索引删除);
例如:zremrangebyrank myzset1 2 4
说明:将myzset按序列号按升序排序,而后删除索引在2-4之间的元素。
(7).zremrangebyscore:删除集合指定范围的元素,并返回删除了元素的个数(按序列号删除) 例如:zremrangebyscores myzset1 2 5