String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string能够包含任何数据,好比jpg图片或者序列化的对象。mysql
Set方法:设置key对应的值为string类型的valueredis
例如:咱们添加一个name=lili的键值对sql
redis 127.0.0.1:6379> set name lili OK
Setnx:设置key对应的值为string类型的value,若是key已经存在,返回0,nx是not exist的意思。安全
例如:咱们添加一个name=lili_new的键值对。bash
redis 127.0.0.1:6379> get name "lili" redis 127.0.0.1:6379> setnx name lili_new (integer) 0 redis 127.0.0.1:6379> get name "lili" redis 127.0.0.1:6379> setnx age 20 (integer) 1
Setex:设置key对应的值为string类型的value,并指定此键值对应的有效期。app
例如:咱们添加一个haircolor=red的键值对,并指定有效期为10秒测试
redis 127.0.0.1:6379> setex haircolor 10 red OK redis 127.0.0.1:6379> get haircolor "red" redis 127.0.0.1:6379> get haircolor (nil)
nil:表示空spa
Setrange:设置指定key的value值的子字符串.net
例如:咱们但愿将lili的126邮箱替换为gmail邮箱code
redis 127.0.0.1:6379> get name "lili@126.com" redis 127.0.0.1:6379> setrange name 6 gmail.com (integer) 14 redis 127.0.0.1:6379> get name "lili@gmail.com" redis 127.0.0.1:6379> set email lijie@lampbrother.net OK redis 127.0.0.1:6379> get email "lijie@lampbrother.net" redis 127.0.0.1:6379> setrange email 6-li-jie.me (integer) 21 redis 127.0.0.1:6379> get email "lijie@li-jie.meer.net"
mset:一次设置多个key的值,成功返回ok表示全部的值都设置了,失败返回0表示没有任何值被设置。
redis 127.0.0.1:6379> mset key1 lijie1 key2 lijie2 OK redis 127.0.0.1:6379> get key1 "lijie1" redis 127.0.0.1:6379> get key2 "lijie2"
msetnx:一次设置多个key的值,成功返回ok表示全部的值都设置了,失败返回0表示没有任何值被设置,可是不会覆盖已经存在的key。
1. redis 127.0.0.1:6379> msetnx key3 lijie3 key2 30 2. (integer) 0 3. redis 127.0.0.1:6379> get key3 4. (nil) 5. redis 127.0.0.1:6379> msetnx key3 lijie3 key4 30 6. (integer) 1 7. redis 127.0.0.1:6379> get key3 8. "lijie3" 9. redis 127.0.0.1:6379> get key4 10. "30"
get:获取key对应的string值,若是key不存在返回nil。
getset:设置key的值,并返回key的旧值。
1. redis 127.0.0.1:6379> getset key4 40 2. "30" 3. redis 127.0.0.1:6379> get key4 4. "40"
getrange:获取key的value值的子字符串。
1. redis 127.0.0.1:6379> get email 2. "lijie@li-jie.meer.net" 3. redis 127.0.0.1:6379> getrange email 0 4 4. "lijie"
mget:一次获取多个key的值,若是对应key不存在则对应返回nil。
1. redis 127.0.0.1:6379> mget key1 key2 key3 2. 1) lijie1 3. 2) lijie2 4. 3) lijie3
incr:对key的值作加加操做,并返回新的值。
1. redis 127.0.0.1:6379> incr key4 2. (integer) 41 3. redis 127.0.0.1:6379> incr key4 4. (integer) 42 5. redis 127.0.0.1:6379> get key4 6. "42" 7. 8. redis 127.0.0.1:6379> incr key7 9. (integer) 1 10. redis 127.0.0.1:6379> incr key7 11. (integer) 2 12. redis 127.0.0.1:6379> get key7 13. "2"
incrby:同incr相似,加指定值,key不存在时候会设置key,并认为原来的value是0。
1. redis 127.0.0.1:6379> incrby key4 5 2. (integer) 47 3. redis 127.0.0.1:6379> get key4 4. "47" 5. redis 127.0.0.1:6379> incrby key4 -5 6. (integer) 42 7. redis 127.0.0.1:6379> get key4 8. "42"
decr:对key的值作减减操做。
decrby:同decr相似,减指定值。
1. redis 127.0.0.1:6379> get key6 2. "39" 3. redis 127.0.0.1:6379> decr key6 4. (integer) 38 5. redis 127.0.0.1:6379> decrby key6 -3 6. (integer) 41 7. redis 127.0.0.1:6379> decrby key6 3 8. (integer) 38
append:给指定key的字符串追加value,返回新字符串值的长度。
1. redis 127.0.0.1:6379> get name 2. "test" 3. redis 127.0.0.1:6379> append name .net 4. (integer) 8 5. redis 127.0.0.1:6379> get name 6. "test.net"
strlen:取指定key的value值的长度。
1. redis 127.0.0.1:6379> strlen name 2. (integer) 8
Redis hash是一个string类型的field和value的映射表。它的添加、删除操做都是0(1)(平均)。hash特别适合用于存储对象。相较于将对象的每一个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,而且能够更方便的存取整个对象。
hset:设置hash field为指定值,若是key不存在,则先建立。
1. redis 127.0.0.1:6379> hset user:001 name lijie 2. (integer) 1 3. redis 127.0.0.1:6379> hget user:001 name 4. "lijie"
hsetnx:设置hash field为指定值,若是key不存在,则先建立。若是存在返回0。
1. redis 127.0.0.1:6379> hsetnx user:002 name lamp 2. (integer) 1 3. redis 127.0.0.1:6379> hget user:002 name 4. "lamp" 5. redis 127.0.0.1:6379> hsetnx user:002 name lampbrother 6. (integer) 0 7. redis 127.0.0.1:6379> hget user:002 name 8. "lamp"
hmset:同时设置hash的多个field。
1. redis 127.0.0.1:6379> hmset user:003 name lijie age 20 sex 1 2. OK 3. redis 127.0.0.1:6379> hget user:003 name 4. "lijie" 5. redis 127.0.0.1:6379> hget user:003 age 6. "20" 7. redis 127.0.0.1:6379> hget user:003 sex 8. "1"
hget:获取指定的hash field。
hmget:获取所有指定的hash field。
1. redis 127.0.0.1:6379> hmget user:003 name age sex 2. 1) "lijie" 3. 2) "20" 4. 3) "1"
hincrby:指定的hash field加上给定值。
1. redis 127.0.0.1:6379> hincrby user:003 age 5 2. (integer) 25 3. redis 127.0.0.1:6379> hget user:003 age 4. "25"
hexists:测试指定field是否存在。
1. redis 127.0.0.1:6379> hexists user:003 age 2. (integer) 1 3. redis 127.0.0.1:6379> hexists user:001 sex 4. (ingeger) 0
hlen:返回指定hash的field数量
1. redis 127.0.0.1:6379> hlen user:001 2. (integer) 1 3. redis 127.0.0.1:6379> hlen user:003 4. (integer) 3
hdel:删除指定hash的field
1. redis 127.0.0.1:6379> hget user:003 age 2. "25" 3. redis 127.0.0.1:6379> hdel user:003 age 4. (integer) 1 5. redis 127.0.0.1:6379> hget user:003 age 6. (nil)
hkeys:返回hash的全部field
1. redis 127.0.0.1:6379> hkeys user:001 2. 1) "name" 3. redis 127.0.0.1:6379> hkeys user:003 4. 1) "name" 5. 2) "sex"
hvals:返回hash的全部value
1. redis 127.0.0.1:6379> hvals user:003 2. 1) "lijie" 3. 2) "1"
hgetall:获取某个hash中所有的field及value
1. redis 127.0.0.1:6379> hgetall user:003 2. 1) "name" 3. 2) "lijie" 4. 3) "sex" 5. 4) "1"
List是一个链表结构,主要功能是push、pop、获取一个范围的全部值等等,操做key理解为链表的名字。Redis的list类型其实就是一个每一个子元素都是string类型的双向链表。咱们能够经过push、pop操做从链表的头部或者尾部添加删除元素,这样list既能够做为栈,又能够做为队列。
lpush:在key对应list的头部添加字符串元素。
1. redis 127.0.0.1:6379> lpush mylist "world" 2. (integer) 1 3. redis 127.0.0.1:6379> lpush mylist "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrange mylist 0 -1 6. 1) "hello" 7. 2) "world"
0表明头部第一个元素,-1表明尾部第一个元素。lrange mylist 0 -1表示从list中头第一个元素一直到尾第一个元素依次取出来,即第一个元素取到最后一个元素。
rpush:在key对应list的尾部添加字符串元素。
1. redis 127.0.0.1:6379> rpush mylist2 "world" 2. (integer) 1 3. redis 127.0.0.1:6379> rpush mylist2 "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrange mylist2 0 -1 6. 1) "world" 7. 2) "hello"
linsert:在key对应list的特定位置前或后添加字符串
1. redis 127.0.0.1:6379> rpush mylist3 "world" 2. (integer) 1 3. redis 127.0.0.1:6379> linsert mylist3 before "world "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrange mylist3 0 -1 6. 1) "hello" 7. 2) "world"
lset:设置list中指定下标的元素值
1. redis 127.0.0.1:6379> rpush mylist4 "hello" 2. (integer) 1 3. redis 127.0.0.1:6379> lset mylist4 0 "world" 4. OK 5. redis 127.0.0.1:6379> lrange mylist4 0 -1 6. 1) "world"
lrem:从key对应list中删除n个和value相同的元素(n<0从尾删除,n=0所有删除)。
1. redis 127.0.0.1:6379> rpush mylist5 "hello" 2. (integer) 1 3. redis 127.0.0.1:6379> rpush mylist5 "hello" 4. (integer) 2 5. redis 127.0.0.1:6379> lrem mylist5 1 "hello" //从mylist5中删除1个和hello相同的元素 6. (integer) 1 //表明删除元素的个数
ltrim:保留指定key的值范围内的数据
1. redis 127.0.0.1:6379> rpush mylist8 "one" 2. (integer) 1 3. redis 127.0.0.1:6379> rpush mylist8 "two" 4. (integer) 2 5. redis 127.0.0.1:6379> ltrim mylist8 1 -1 6. (integer) 1 7. redis 127.0.0.1:6379> lrange mylist8 0 -1 8. 1) "two"
lpop:从list的头部删除元素,并返回删除元素
1. redis 127.0.0.1:6379> lrange mylist 0 -1 2. 1) "hello" 3. 2) "world" 4. redis 127.0.0.1:6379> lpop mylist 5. "hello" 6. redis 127.0.0.1:6379> lrange mylist 0 -1 7. 1) "world"
rpop:从list的尾部删除元素,并返回删除元素
1. redis 127.0.0.1:6379> lrange mylist2 0 -1 2. 1) "hello" 3. 2) "world" 4. redis 127.0.0.1:6379> rpop mylist2 5. "world" 6. redis 127.0.0.1:6379> lrange mylist2 0 -1 7. 1) "hello"
lists类型
rpoplpush:从第一个list的尾部移除元素并添加到第二个list的头部。
1. redis 127.0.0.1:6379> lrange mylist5 0 -1 2. 1) "three" 3. 2) "hello" 4. redis 127.0.0.1:6379> lrange mylist6 0 -1 5. 1) "hello" 6. 2) "foo" 7. redis 127.0.0.1:6379> rpoplpush mylist5 mylist6 8. "hello" 9. redis 127.0.0.1:6379> lrange mylist5 0 -1 10. 1) "three" 11. redis 127.0.0.1:6379> lrange mylist6 0 -1 12. 1) "hello" 13. 2) "hello" 14. 3) "foo"
lindex:返回名称为key的list中index位置的元素。
1. redis 127.0.0.1:6379> lrange mylist5 0 -1 2. 1) "three" 3. 2) "foo" 4. redis 127.0.0.1:6379> lindex mylist5 0 5. "three" 6. redis 127.0.0.1:6379> lindex mylist5 1 7. "foo"
llen:返回key对应list的长度
1. redis 127.0.0.1:6379> lrange mylist6 0 -1 2. 1) "hello" 3. 2) "hello" 4. 3) "foo" 5. redis 127.0.0.1:6379> llen mylist6 6. (integer) 3
Set是集合,它是string类型的无序集合。set是经过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合咱们能够取并集、交集、差集。经过这些操做咱们能够实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元素。
1. redis 127.0.0.1:6379> sadd myset "hello" 2. (integer) 1 //表示添加成功 3. redis 127.0.0.1:6379> sadd myset "world" 4. (integer) 1 //表示添加成功 5. redis 127.0.0.1:6379> sadd myset "world" 6. (integer) 0 //表示添加不成功 7. redis 127.0.0.1:6379> smembers myset 8. 1) "world" 9. 2) "hello"
srem:删除名称为key的set中的元素。
1. redis 127.0.0.1:6379> sadd myset2 one 2. (integer) 1 3. redis 127.0.0.1:6379> sadd myset2 two 4. (integer) 1 5. redis 127.0.0.1:6379> sadd myset2 three 6. (integer) 1 7. redis 127.0.0.1:6379> smembers myset2 8. 1) "three" 9. 2) "two" 10. 3) "one" 11. redis 127.0.0.1:6379> srem myset2 two 12. (integer) 1 13. redis 127.0.0.1:6379> srem myset2 two 14. (integer) 0 15. redis 127.0.0.1:6379> smembers myset2 16. 1) "three" 17. 2) "one"
spop:随机返回并删除名称为key的set中一个元素。
1. redis 127.0.0.1:6379> sadd myset3 one 2. (integer) 1 3. redis 127.0.0.1:6379> sadd myset3 two 4. (integer) 1 5. redis 127.0.0.1:6379> sadd myset3 three 6. (integer) 1 7. redis 127.0.0.1:6379> sadd myset3 four 8. (integer) 1 9. redis 127.0.0.1:6379> sadd myset3 five 10. (integer) 1 11. redis 127.0.0.1:6379> smembers myset3 12. 1) "four" 13. 2) "three" 14. 3) "two" 15. 4) "one" 16. 5) "five" 17. redis 127.0.0.1:6379> spop myset3 18. "one" 19. redis 127.0.0.1:6379> spop myset3 20. "four" 21. redis 127.0.0.1:6379> spop myset3 22. "three" 23. redis 127.0.0.1:6379> smembers myset3 24. 1) "two" 25. 2) "five"
sdiff:返回全部给定key与第一个key的差集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sdiff myset2 myset3 8. 1) "three"
sdiffstore:返回全部给定key与第一个key的差集,并将结果存为另外一个key。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sdiffstore myset4 myset2 myset3 8. (integer) 1 9. redis 127.0.0.1:6379> smembers myset4 10. 1) "three"
sinter:返回全部给定key的交集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sinter myset2 myset3 8. 1) "two"
sinterstore:返回全部给定key的交集,并将结果存为另外一个key。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sinterstore myset6 myset2 myset3 8. (integer) 1 9. redis 127.0.0.1:6379> smembers myset6 10. 1) "two"
sunion:返回全部给定key的并集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sunion myset2 myset3 8. 1) "three" 9. 2) "one" 10. 3) "two"
sunionstore:返回全部给定key的并集。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> sunionstore myset7 myset2 myset3 8. (integer) 3 9. redis 127.0.0.1:6379> smembers myset7 10. 1) "three" 11. 2) "one" 12. 3) "two"
smove:从第一个key对应的set中移除member并添加到第二个对应的set中。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "three" 3. 2) "two" 4. redis 127.0.0.1:6379> smembers myset3 5. 1) "two" 6. 2) "one" 7. redis 127.0.0.1:6379> smove myset2 myset7 three 8. (integer) 1 9. redis 127.0.0.1:6379> smembers myset2 10. 1) "two" 11. redis 127.0.0.1:6379> smembers myset3 12. 1) "two" 13. 2) "one" 14. 3) "three"
scard:返回名称为key的set的元素个数。
1. redis 127.0.0.1:6379> scard myset3 2. (integer) 3
sismember:测试member是不是名称为key的set的元素。
1. redis 127.0.0.1:6379> smembers myset2 2. 1) "two" 3. redis 127.0.0.1:6379> sismember myset2 two 4. (integer) 1 5. redis 127.0.0.1:6379> sismember myset2 one 6. (integer) 0
srandmember:随机返回名称为key的set的一个元素,但不删除元素。
1. redis 127.0.0.1:6379> smembers myset3 2. 1) "two" 3. 2) "one" 4. redis 127.0.0.1:6379> srandmember myset3 5. "two" 6. redis 127.0.0.1:6379> srandmember myset3 7. "one"
sorted set是set的一个升级版本,它在set的基础上增长了一个顺序属性,这一属性在添加修改元素的时候能够指定,每次指定后,zset会自动从新按新的值调整顺序。能够理解为有两列的mysql表,一列存value,一列存顺序。操做中key理解为zset的名字。
zadd:向名称为key的zset中添加元素member,score用于排序。若是该元素存在,则更新其顺序。
1. redis 127.0.0.1:6379> zadd myzset 1 "one" 2. (integer) 1 3. redis 127.0.0.1:6379> zadd myzset 2 "two" 4. (integer) 1 5. redis 127.0.0.1:6379> zadd myzset 3 "two" 6. (integer) 0 7. redis 127.0.0.1:6379> zrange myzset 0 -1 withscores 8. 1) "one" 9. 2) "1" 10. 3) "two" 11. 4) "3"
zrem:删除名称为key的zset中的元素member
1. redis 127.0.0.1:6379> zrange myzset 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "3" 6. redis 127.0.0.1:6379> zrem myzset two 7. (integer) 1 8. redis 127.0.0.1:6379> zrange myzset 0 -1 withscores 9. 1) "one" 10. 2) "1"
zincrby:若是在名称为key的zset中已经存在元素member,则该元素的score增长increment,不然向该集合中添加该元素,其score的值为increment。
1. redis 127.0.0.1:6379> zadd myzset2 1 "one" 2. (integer) 1 3. redis 127.0.0.1:6379> zadd myzset2 2 "two" 4. (integer) 1 5. redis 127.0.0.1:6379> zincrby myzset2 2 "one" 6. "3" //表明one的顺序号变成了3 7. redis 127.0.0.1:6379> zrange myzset2 0 -1 withscores 8. 1) "two" 9. 2) "2" 10. 3) "one" 11. 4) "3"
zrank:返回名称为key的zset中member元素的排名(按score从小到大排序)即下标。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zrank myzset3 two 11. (integer) 1 //two的下标是1(从0开始)
zrevrank:返回名称为key的zset中member元素的排名(按score从大到小排序)即下标。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zrevrank myzset3 two 11. (integer) 2
zrevrange:返回名称为key的zset(按score从大到小顺序)中的index从start到end的全部元素。
1. redis 127.0.0.1:6379> zrevrange myzset3 0 -1 withscores 2. 1) "five" 3. 2) "5" 4. 3) "three" 5. 4) "3" 6. 5) "two" 7. 6) "2" 8. 7) "one" 9. 8) "1"
zrangebyscore:返回集合中score在给定区间的元素。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. redis 127.0.0.1:6379> zrangebyscore myzset3 2 3 withscores 9. 1) "two" 10. 2) "2" 11. 3) "three" 12. 4) "3"
zcount:返回集合中score在给定区间的数量。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zcount myzset3 2 3 11. (integer) 2
zcard:返回集合中的元素个数。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. 7) "five" 9. 8) "5" 10. redis 127.0.0.1:6379> zcard myzset3 11. (integer) 4
zremrangebyrank:删除集合中排名在给定区间的元素。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. redis 127.0.0.1:6379> zremrangebyrank myzset3 1 1 7. (integer) 1 //只删除一个 8. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 9. 1) "one" 10. 2) "1"
zremrangebyscore:删除集合中score在给定区间的元素。
1. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 2. 1) "one" 3. 2) "1" 4. 3) "two" 5. 4) "2" 6. 5) "three" 7. 6) "3" 8. redis 127.0.0.1:6379> zremrangebyscore myzset3 1 2 9. (integer) 2 //删除顺序为1和2的 10. redis 127.0.0.1:6379> zrange myzset3 0 -1 withscores 11. 1) "three" 12. 2) "3"