[Redis学习]常用redis命令
字符串类型
赋值与取值
SET key value //将key赋值为value
GET key //取key的值
说明:当值不存在时返回空结果nil
批量赋值与取值
MSET key1 value1 key2 vlaue2 key3 value3... //同时设置key1->value1,key2->value2,key3->value3
MGET key1 key2 key3//返回value1,value2,value3
递增数字
SET foo 1
INCR foo //return 2
说明:只对数字类型的值有效,如果是非数字型,会返回(error)ERR value is not integer or out of range
的错误
增加&&减小指定的数字
SET foo 1
INCRBY foo 2 // now foo is 3
DECRBY foo 1 // now foo is 2
增加指定的浮点数
SET foo 1
INCRBYFLOAT foo 0.123 //now foo is 1.123
INCRBYFLOAT foo -0.123 // now foo is 1
向尾部追加值
SET foo "hello"
APPEND foo " world!" //now foo is hello world
字符串长度
SET foo "hello world"
STRLEN foo //return 11
散列类型
赋值与取值
HSET key field value//设置key的field字段的值为vlaue
HGET key field//去的key的field字段的值
HMSET key field value [field value...]//同时设置多个key的field字段
HMGET key field [field...]//同时取得多个key的field字段
HGETALL key//取得一个key的field字段的值
说明:HSET命令不用区分插入和更新操作,当执行的是插入操作时HSET会返回1,更新操作时返回0;同时注意redis的每一个键都属于一个明确的数据类型,使用一种数据类型的命令操作另外一种数据类型的键会提示错误(非所有命令)
判断字段是否存在
HEXISTS key field//判断key的field字段存在与否,存在返回1,否则返回0(注意键不存在也会返回0)
字段不存在时赋值
HSETNX key field value//如果key的field字段的不存在则设置field字段的值为value
增加数字
HINCRBY key field increment//同INCRBY类似,如果值不存在则会创建
删除字段
HDEL key field [field...]//支持删除一个或者多个字段,返回被删除的字段个数
只获取字段名或字段名
HKEYS key //或者所有字段的名字
HVALS key //或者所有字段的值
获取字段数量
KLEN key
列表类型
向列表两端增加元素
LPUSH key value [value...] //向左边增加元素
RPUSH key vlaue [value...] //向右边增加元素
说明:无论是LPUSH还是RPUSH增加多个元素时都是依次向最左边/最右边push操作
向列表两端弹出元素
LPOP key //左边弹出一个元素
RPOP key //右边弹出一个元素
获取列表中元素的个数
LLEN key // 当键不存在是LLEN会返回0
获取列表片段
LRANGE key start stop //获取片段中的某一个片段,返回索引从start到stop之间的所有元素(包含两端的元素),同时注意redis的列表其实索引为0
说明:
- LRANGE命令在取得列表片段的同时不会像LPOP一样删除该片段,
- LRANGE命令与很多语言中用来截取数组片段的方法有点区别的时返回的值包含最右边的元素。
- 同时LRANGE支持负索引:-1表示最右边的第一 个元素,-2表示最右边的第二个元素
- 如果start的索引位置比stop的索引位置靠后,返回空列表
- 如果stop大于实际的索引范围,返回到列表最右边的元素
删除列表中指定的值
LREM key count value
说明:该命令会删除表中钱count个值为value的元素,返回实际删除的元素个数。根据count的值不同,删除的执行方式也有所不同
- 当count>0时会从列表左边开始删除前count个值为value的元素
- 当count<0时会从列表右边开始删除前count个值为value的元素
- 当count为0时会删除所有值为value的元素
获取/设置制定索引的元素值
LINDEX key index //返回index索引位置的元素(索引从0开始),如果索引为负数,那么表示从右边开始计算的索引,最右边的索引是-1
LSET key index value//将索引为index位置的元素赋值为value
只保留列表指定片断
LTRIM key start end //删除指定索引范围之外的所有元素,制定列表范围的方法和LRANGE命令相同
TIPS: LTRIM命令常和LPUSH命令一起使用来限制列表中元素的数量,如记录日志是我们希望只保留最近的100条日志,则每次加入新元素时调用一次LTRIM命令即可:
LPUSH logs newLog
LTRIM logs 0 99
向列表插入元素
LINSERT key BEFORE|AFTER pivot value //在key的列表中查找值为pivot的元素,并在它的前面/后面插入值value,返回插入后列表的元素个数
将元素从一个列表转到另一个列表
POPLPUSH source destination //先对source列表执行pop命令将弹出的值push进destination列表中
集合类型
增加元素
SADD key member [member...] //返回增加成功的个数,注意当值存在的时候会忽略这个元素,因为集合类型不允许有重复的值
删除元素
SREM key member [member...] //返回删除成功的个数
获取集合中所有的元素
SMEMBERS key //返回集合中的所有元素
判断元素是否在集合中
SISMEMBER key member //判断member是否在key集合中,存在返回1,否则返回0
集合间运算
SDIFF key [key,key...] //对多个集合进行差集运算,如SDIFF a,b代表属于a同时不属于b的元素集合,如果是2个以上则是对前面求出的差集与后面的差集做比较,如SDIFF
SINTER key [key,key...] //对多个集合进行交集计算
SUNION key [key,key...] //对多个集合进行并集计算
获得集合中元素个数
SCARD key
进行集合运算并将结果存储
SDIFFSTORE destination key [key...] //将差集的结果存储到destination集合中
SINDEXSTORE destination key[key...] //将交集的结果存储到destination集合中
SUNIONSTORE destination key[key...] //将并集的结果存储到destination集合中
随机获得集合中的元素
SRANDMEMBER key [count] //随机从集合中获得count个元素(不指定count的时候获取一个)
说明:
- 当count为正数时,会随机从集合里面获得count个不重复的元素。
- 如果count值大于集合中元素个数,那么会返回集合中所有的元素。
- 当count为负数时,会随机从集合里面返回|count|个元素,这些元素有可能相同
从集合中弹出一个元素
SPOP key //随机从集合中弹出一个元素
有序集合
增加元素
ZADD key score member [score member...] //向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值时新加入到集合中的元素个数。
获得元素的分数
ZSCORE key member //获得元素内某个成员的分数
获得排名在某个范围内的元素列表
ZRANGE key start stop [WITHSCORES] //按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端),如果是负数代表从后面向前面查找(-1代表最后一个元素),如果加上WITHSCORES返回时会带上元素的分数
ZREVRANGE key start stop [WITHSCORES] //同ZRANGE,不同的是按照元素分数从大到小的顺序给出的
获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] //按照元素分数从小到大的顺序返回分数在min和max(包含min和max)的元素,如果希望分数范围不包括端点值,可以在分数钱加上"("符号,如希望返回80到100分的数据,含80分,但不包含100分,那么ZRANGEBYSCORE key 80 (100即可,同时min和max还支持无穷打,-inf和+inf代表负无穷和正无穷。比如想得到所有分数高于80(不含)的,那么ZRANGEBYSCORE key (80 +inf.LIMIT offset count同sql中的limit类似,表示从offset位置取count个值
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] //同ZRANGEBYSCORE
增加某个元素的分数
ZINCRBY key increment member //给元素member增加increment的值
获得集合中元素的数量
ZCARD key
获得制定分数范围内的元素个数
ZCOUNT key min max //min和max也包含在内,如果无需包含可用"("符号
删除一个或多个元素
ZREM key member [member...] //返回成功删除的个数
按照排名范围删除元素
ZREMRANGEBYRANK key start stop //按照元素分数从小到大的顺序(0表示最小)删除处在制定排名范围内的所有元素,并返回删除的元素数量
按照分数范围删除元素
ZREMRANGEBYSCORE key min max //删除指定分数范围内的的所有元素,返回删除的元素数量
获得元素的排名
ZRANK key member //按照分数从小到大的顺序获得指定的元素的排名(从0开始,分数最小的元素排名为0)
ZREVRANK key member //同上,只是按照从大到小的顺序排列
计算有序集合的交集
ZINTERSTORE destination numkeys key [key...] [WEIGHTS weight [weight...]] [AGREGATE SUM|MIN|MAX]
说明:用来计算多个有序集合的交集并叫结果存储到destination键中(同样以有序集合类型存储),返回值为destination键中的元素个数 . destination键中元素的分数是由AGGREGATE参数决定的。
- 当AGGREGATE为SUM(默认值)是,destination中的元素的分数是每个参与计算的集合中该元素分数的和。
- 当AGGREGATE为MIN时,destination中元素的分数是每个参与计算的集合中该元素分数的最小值
- 当AGGREGATE为MAX是,destination键中元素的分数是每个参与计算的集合中该元素分数的最大值
同时他还能够通过WEIGHTS参数设置每个集合的权重,每个集合在参与计算时元素的分数会被乘上该集合的权重。
元素之间的并集
ZUNIONSTORE destination numkeys key [key...] [WEIGHTS weight [weight...]] [AGREGATE SUM|MIN|MAX] //同ZINTERSTORE