Redis 笔记
2016-09-19 本文已影响0人
代码界的小学生
Redis的数据类型
expire(为给定 key 设置生存时间)
语法:expire key seconds
String 字符串类型
一个键最多存储512M
1> SET:设置key对应值为value
语法: SET key value
SET str1 'xdl'
2>GET:根据KEY找到对应的值
语法: GET key
注意:如果key不存在 返回nil
3>GETRANGE:返回字符串中的一部分
语法: GETRANGE key start end
GETRANGE str1 0 1
GETRANGE str1 0 -1
GETRANGE str1 0 -2
GETRANGE str1 0 1000
4>GETSET:设置指定key的值,并返回旧值
语法: GETSET key value
SET str2 'itxdl'
GETSET str2 'xdl'
注意:当key不存在返回nil
5>MSET:一次设置多个键值对
语法:MSET key value [key value .......]
MSET str4 'xdl' str5 'itxdl' str6 'xdlo2o'
6>MSETNX:一次设置多个key-value对,只有所有的key都不存在的时候才会成功
语法: MSETNX key value [key value .....]
MSETNX str10 'a' str11 'b' str12 'c'
MSETNX str12 'd' str13 'e'
7>MGET:一次得到多个键值
语法: MGET key key
MGET str4 str5 str6
8>STRLEN:获取key的字符串长度
语法: STRLEN key
STRLEN str4
9>SETRANGE:相当于字符串替换
语法:SETRANGE key offset value
SET str7 'hello'
SETRANGE str7 5 'xdl'
注意: 如果设置key原来的字符串的长度比偏移量小,就会以零字节(\x00)来填充
10>SETNX:只有KEY不存在的时候才能设置成功
语法: SETNX key value
SETNX str7 'hello'
11>SETEX:设置一个KEY并且设置一个过期时间
语法: SETEX key seconds value
SETEX str8 30 'xdl'
12>PSETEX: 以毫秒为单位设置KEY的生存周期
语法:PSEREX key milliseconds value
PSETEX set9 20000 'hello'
13> INCR:对key中存储的数字加1
语法: INCR key
SET str14 1
INCR str14
INCR str15
注意:key如果不存在,则会先初始化为0,在进行INCR操作
14>INCRBY:将key中存储的数字加上指定增量
语法: INCRBY key INCREMENT
SET str16 10
INCRBY str16 5
INCRBY str16 1.5
15>INCRBYFLOAT:将key中存储的数字加上指定浮点数
语法; INCRBYFLOAT key increment
SET str17 1
INCRBYFLOAT str17 1.5
16>DECR:将key中存储的数字减1
语法: DECR key
SET str18 1
DECR str18
17>DECRBY:将key中存储的数值减指定值
语法: DECRBY key decrement
SET str19 20
DECRBY str19 5
18>APPEND:通过APPEND将值追加到字符串末尾
语法:APPEND key value
SET str20 'xdl'
APPEND str20 'o2o'
LIST列表类型
1>LPUSH:向列表左端添加元素
语法: LPUSH key value value ....
LPUSH list1 a b c
2>RPUSH:向列表右端添加元素
语法: RPUSH key value ....
RPUSH list1 d e
3>LRANGE:获取列表片段
语法: LRANGE key start stop
LRANGE list1 0 -1
4>LPUSHX:向列表头部添加元素,只有key存在才添加
语法: LPUSHX key value
LPUSHX list1 a
5>RPUSHX:向列表尾部添加元素,只有key存在才添加
语法: RPUSHX key value
6>LPOP:将列表头部的元素弹出
语法: LPOP key
LPOP list1
7>RPOP:弹出列表尾部元素
语法: RPOP key
RPOP list1
8>LLEN:获取列表长度
语法 LLEN key
LLEN list1
9>LREM:删除列表中的指定值
语法: LREM key count value
count >0 :从列表头部开始,向尾部搜索,移除与value相等的元素,移除count个
count <0 :从列表的尾部开始,向头部搜索,,移除与value相等的元素,移除count个
count = 0:移除列表中所有与value相等的元素
LPUSH list3 a b c d a e b d c b e d
LREM list3 2 a
LREM list3 -2 b
LREM list3 0 d
10>LINDEX:获取指定索引元素上的值
语法: LIDEX key index
LINDEX list3 3
11>LSET:设置指定元素的值
语法: LSET key index value
LSET list3 10 a
12>LTRIM:只保留列表片段
语法:LTRIM key start stop
LTRIM list3 0 3
LPUSH list3 a b c a b c a b c
LTRIM list3 0 1000
13>LINSERT 向列表中插入元素
语法: LINSERT key BEFORE|AFTER pivot value
LPUSH list4 a b c d
LINSERT list4 BEFORE 'b' 'x'
LINSERT list4 AFTER 'b' 'x'
14>RPOPLPUSH:将元素从一个列表转移到另一个列表
语法 RPOPLPUSH source destination
LPUSH list5 a b c
LPUSH list6 x y z
RPOPLPUSH list5 list6
SET集合类型:无序集合
1> SADD:向集合中添加一个元素
语法 SADD key value [,.......]
SADD set1 xdl
SADD set1 itxdl
2>SMEMBERS:返回指定集合中的元素
语法: SMEMBERS key
SMEMBERS set1
3>SISMEMBER:检查member是否是集合中的成员
语法:SISMEMBER key member
SISMEMBER set1 xdl
4>SREM:删除集合中一个或多个成员
语法:SREM key member [member ....]
SREM set1 xdl
5>SPOP:删除并返回集合中的随机元素
语法: SPOP key
SPOP set1
6>SRANDMEMBER:随机返回集合中元素
语法: SRANDMEMBER key count
注意:
count 为正数,而且小于集合中的元素,返回一个随机元素的集合数组,
count 数大于集合中的个数的时候,返回整个集合
count 为负数,返回一个数组,数组中的成员可能出现重复,数组的长度是count的绝对值
SRANDMEMBER set1 -3
7>SDIFF:返回集合的差集
语法: SDIFF key key ....
SADD set2 a b c d
SADD set3 c d e f
SADD set4 a e
SDIFF set3 set2
SDIFF set2 set3 set4
8>SINTER:返回集合的交集
语法: SINTER key key key ...
SINTER set2 set3
SADD set5 c
SINTER set2 set3 set5
9>SUNION:返回集合中并集
语法: SUNION key key ...
SUNION set2 set3
SUNION set2 set3 set4
10>SCARD:返回集合中元素个数
语法: SCARD key
SCARD set2
11>SDIFFSTORE:将差集的结果保存到指定的集合当中
语法: SDIFFSTORE destination key key ....
SDIFFSTORE set6 set2 set3
12>SINTERSTORE:将交集的结果保存到指定的集合当中
语法: SINTERSTORE destination key key ....
SINTERSTORE set7 set2 set3
13>SUNIONSTORE:将并集的结果保存到指定的集合当中
语法: SUNIONSTORE destination key key ....
SUNIONSTORE set8 set2 set3
14>SMOVE:将集合中的元素移动另一个集合中
语法 SMOVE source destination member
SMOVE set3 set2 e
Hash类型
1>HSET:将哈希表中的key中的field设置成指定的value
语法:HSET key field value
HSET h1 username 'zhangsan'
HSET h1 password '123'
HSET h1 age '18'
2>HGET:返回哈希表key中给的field的值
语法: HGET key field
HGET h1 username
HGET h1 age
3>HSETNX:将hash表中的field设置成指定的值,只有field不存在才能成功,如果field存在,操作无效
语法 HSETNX key field value
HSETNX h1 aaa '20'
HSETNX h1 aaa '21'
4>HMSET:通过多个 field value设置到hash表key中
语法 HMSET key field value field value .....
HMSET h2 username 'lisi' age '20' password '456'
5>HMGET:一次获得hash表key中多个field的值
语法: HMGET key field field .....
HMGET h2 username age password
HMGET h2 username age password aaa
注意:如果hash表key中field不存在,返回nil
6>HGETALL:返回hash表key中所有的field和value
语法 HGETALL key
HGETALL h2
7>HKEYS:返回hash表key中的所有的field
语法 HKEYS key
HKEYS h2
8>HVALS:返回hash表key中所有的field的对应值
语法 HVALS key
HVALS h2
9>HEXISTS:检测hash中key的field是否存在
语法: HEXISTS key field
HEXISTS h2 username
HEXISTS h2 aaa
10>HLEN:返回hash表key中的field的数量
语法 HLEN key
HLEN h2
11>HINCRBY :给hash表key中的field做增量操作
语法 HINCRBY key field increment
HSET h3 age 20
HINCRBY h3 age 5
12>HINCRBYFLOAT:给hash表key中的field做增量浮点操作
语法: HINCRBYFLOAT key field increment
HSET h3 aaa '12.2'
HINCRBYFLOAT h3 aaa 2.5
13>HDEL:删除hash中key的指定field,可删除一个或多个
语法: HDEL key field field .....
HDEL h2 username
HGETALL h2
zset(sorted set)有序集合
1》ZADD:将元素及其分数添加到集合中
语法:ZADD key score member [score member]
ZADD zset 100 xdl
ZADD zset 98 zhangsan 98 list 80 test 78 test1 85 test2
ZADD zset 60 test2 67 test3 56 test4
2》ZSCORE:获得指定元素的分数
语法:ZSCORE key member
ZSCORE zset xdl
ZADD zset 12.3 test5
3》ZRANGE:按照元素分数从小到大的顺序返回指定索引start到stop之间所有元素(包含两端)
语法:ZRANGE key start stop [WITHSCORES]
ZRANGE zset 0 -1
ZRANGE zset 0 -1 WITHSCORES
ZRANGE zset 0 2 WITHSCORES
ZRANGE zset 0 2000 WITHSCORES
ZRANGE zset 1000 2000 WITHSCORES
ZADD zset 60 test6 60 test7 60 test8 60 test9
注意:当两个元素的分数相同的时候,Redis在排序按照字典的顺序(0<9<A<Z<a<z),如果使用的是UTF-8的编码方式的中文同样按照字典顺序排列
4》ZREVRANGE:和ZRANGE相反,按照分数从大到小的顺序
语法:ZREVRANGE key start stop [WITHSCORES]
ZREVRANGE zset 0 -1 WITHSCORES
5》ZRANGEBYSCORE:获得指定分数范围内的元素,按照分数从小到大的顺序,返回的是分数在指定的min到max的元素
语法:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
获得分数80~90之间的所有元素 包含80 90
ZRANGEBYSCORE zset 80 90
ZADD zset 81 test9 82 test10 83 test11 84 test12 84 test13 88 test14 89 test15 90 test16
ZRANGEBYSCORE zset 80 90 WITHSCORES
ZRANGEBYSCORE zset 80 (90 WITHSCORES
ZRANGEBYSCORE zset (80 (90 WITHSCORES
RANGEBYSCORE zset (80 (90 WITHSCORES LIMIT 0 3
注意:通过(代表不包端点
6》ZREVRANGEBYSCORE:获得指定分数范围内的元素,按照元素的分数从大到小的顺序返回min和max之间的元素
语法:ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
ZREVRANGEBYSCORE zset 90 80 WITHSCORES
7》ZINCRBY:操作某个元素的分数,返回操作之后的分数
语法:ZINCRBY key increment member
ZINCRBY zset 5 test16
ZINCRBY zset -15 test16
8》ZCARD:获得集合中元素的数量
语法:ZCARD key
ZCARD zset
9》ZCONUT:获得指定分数内的元素的数量
语法:ZCOUNT key min max
ZCOUNT zset 80 90
COUNT zset (80 (90
10》ZREM:删除一个或者多个元素,返回删除元素的个数
语法:ZREM key member ...
ZREM zset test16
11》ZREMRANGEBYRANK:按照排名范围删除元素,按照分数从小到大的顺序删除所指定的排名范围内的所有元素
语法:ZREMRANGEBYRANK key start stop
ZADD testRem 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
ZREMRANGEBYRANK testRem 0 2
ZRANGE testRem 0 -1 WITHSCORES
12》ZREMRANGEBYSCORE:按照分数范围删除元素
语法:ZREMRANGEBYSCORE key min max
ZADD testRem1 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h
ZREMRANGEBYSCORE testRem1 3 7
ZRANGE testRem1 0 -1 WITHSCORES
13》ZRANK:获得指定元素的排名,根据分数从小到大的顺序
语法:ZRANK key member
ZRANK zset xdl
ZRANGE zset 0 -1 WITHSCORES
14》ZREVRANK:获得指定元素的排名,根据分数从大到小的顺序
语法:ZREVRANK key member
ZREVRANK zset xdl
ZREVRANGE zset 0 -1 WITHSCORES
15》ZINTERSTORE:计算有序集合的交集,并将结果保存起来
语法:ZINTERSTORE destination numkeys [WEIGHTS weight weight...] [AGGREGATE SUM | MIN | MAX]
ZADD zset2 1 a 2 b 3 c
ZADD zset3 10 a 20 b 30 c
ZINTERSTORE zset4 2 zset2 zset3
ZREVRANGE zset5 0 -1 WITHSCORES
ZINTERSTORE zset4 2 zset2 zset3 AGGREGATE SUM
ZINTERSTORE zset5 2 zset2 zset3 AGGREGATE MIN
ZINTERSTORE zset6 2 zset2 zset3 AGGREGATE MAX
ZINTERSTORE zset7 2 zset2 zset3 WEIGHTS 2 0.2
16》ZUNIONSTORE:计算有序集合并集,将结果保存起来
语法:ZUNIONSTORE destination numkeys key key ... [WEIGHTS weight weight...] [AGGREGATE SUM | MIN | MAX]
ZADD zset8 1 a 2 b 3 c
ZADD zset9 4 d 5 e 6 f 7 a
ZUNIONSTORE zset10 2 zset8 zset9
ZRANGE zset10 0 -1 WITHSCORES
ZUNIONSTORE zset11 2 zset8 zset9 AGGREGATE SUM
ZRANGE zset11 0 -1 WITHSCORES
ZUNIONSTORE zset12 2 zset8 zset9 AGGREGATE MIN
ZRANGE zset12 0 -1 WITHSCORES
ZUNIONSTORE zset13 2 zset8 zset9 AGGREGATE MAX
ZRANGE zset13 0 -1 WITHSCORES
ZUNIONSTORE zset14 2 zset8 zset9 WEIGHTS 2 2
ZRANGE zset14 0 -1 WITHSCORES