Redis命令

Redis命令

基本命令

Redis对于键的命名并没有强制的要求,推荐使用“对象类型:对象ID:对象属性”来命名一个键,如user:1:name 来存储用户名 

set命令建立一个num的键,并且设置值为1 
$ SET num 1

读取num的值 
$ GET num

判断一个键名 是否存在,存在返回1,不存在返回0 $ EXISTS key

删除一个或多个键,返回值是删除键的个数 
$ DEL key [key …]

*DEL命令的参数不支持通配符,可以使用Linux的管道和xargs命令实现删除所有符合规则的键。 
如要删除所有“user:”开始的键: 
redis-cli KEYS “user:*” | xargs reds-cli DEL 

type命令获取健值的数据类型(string,hash,list,set,zset) 
$ TYPE key

累加1 
$ INCR counter 

加上指定整数 
$ INCRBY counter 10

累减1 
$ DECR counter

减去指定数10 
$ DECRBY counter 10

加上指定浮点数
$ INCRBYFLOAT counter 1.5

减去指定浮点数 
$ DECRBYFLOAT counter 1.5

向尾部追加值,如果键不存在则SET 
$ APPEND key value

获取字符串长度(UTF-8编码的长度都是3) 
$ STRLEN key

同时获取多个键值 
$ MGET key [key …]

同时设置多个键值
$ MSET key value [key value …] 

散列类型

$ HSET key field value 
$ HGET key field 
$ HMSET key field value [field value …] 
$ HMGET key field [field …] 
$ HGETALL key 
$ HEXISTS key field 判断字段是否存在 
$ HSETNX key field value 当字段不存在时赋值 
$ HINCRBY key field increment 
$ HDEL car price 
$ HKEYS key 只获取字段名 
$ HVALS key 只获取字段值 
$ HLEN key 获得字段数量 

HSET命令不区分插入和更新操作,当键不存在会自动创建,当执行插入操作会返回1,更新插作返回0。 
示例: 
$ HSET car:1 price 500 
$ HSET car:1 color red 
$ HSET car:1 name bmw 
等价于 
$HMSET car:1 price 500 color red name bmws 

$ HGET car:1 price 
$ HMGET car price name color 
$ HGETALL car:1 

判断字段是否存在 
$ HEXISTS car:1 price 

不存在price就保存 
$ HSETNX car:3 price 500

price+2,,要减的时候increment可以是负数 
$ HINCRBY car:3 price 2 

列表类型

可以存储一个有序的字符串列表,内部是使用的双向链表实现的。所以向两端插入数据极快。 
向列表左边增加元素 
$ LPUSH key value [value …] 

向列表右边增加元素 
$ RPUSH key value [value …]

弹出左边第一个元素,先移除最左边第一个元素,再返回该元素值 
$ LPOP name

弹出右边第一个元素,先移除最右边第一个元素,再返回该元素值 
$ RPOP name

获取列表元素个数 
$ LLEN key

获取列表中的一段,将返回start到stop之间的元素,包含start和stop元素,不会像LPOP一样删除该元素 
支待负索引,表示从右边开始计算,-1表示右边第一个无素,-2表示右边第二个元素,LRANGE key o -1 可以获取列表中的所有元素 
$ LRANGE key start stop

删除列表中前count个值为value的元素,返回实际删除的个数 
$ LREM key count value

返回指定index位置的元素,index从0开始计算 
$ LINDEX key index

将索引号为index位置的元素重新赋值为value,如果index不存在报(index out of range) 
$ LSET key index value

只保留列表指定位置间的数据 
$ LTRIM key start end

向列表中插入元素,首先在列表中查找值为pivot的元素,然后根据第二个参数before|after决定插入位置 
$ LINSERT key BEFORE|AFTER pivot value 

将元素从一个列表转到另一个列表 
$ RPOPLPUSH source destination

示例: 
$ LPUSH mame name1 
$ LPUSH name name0 
$ RPUSH name name2 
$ RPUSH name name3 name4 
$ LRANGE name 0 2 
$ LRANGE name 0 -1 
$ LINDEX name 2 
$ LSET name 2 name3-lset 

集合类型

对比 集合 列表 
有序性 否 是
唯一性 是 否 

向集合中添加一个或多个元素,如果key不存在就会自动创建,因为不能重复,如果元素已经存在就会忽略,返回成功加入的数量,忽略的不计算在内 
SADD key member [member…] 

从集合中删除元素 
SREM key member [member…] 

获得集合中所有元素 
SMEMBERS key 

判断一个元素是否存在于key中,存在返回1,不存在时返回0 
SISMEMBER key member 

对多个集合执行差集运算,支持多个集合计算,(找不存在的) SDIFF key [key …] 

对多个集合执行交集运算,(找相同的) 
SINTER key [key…] 

对多个集合执行并集运算,(合并) SUNION key [key…] 

获取集合中元素个数 SCARD key 

进行集合运算并将结果存入destination 
SDIFFSTORE destination key [key …] 
SINTERSTORE destination key [key …] 
SUNIONSTORE destination key [key …] 

随机获得集合中的元素 
SRANDMEMBER key [count] 
*如果有count参数,表示随机获得集合中的count个元素 
*如果count为负数,取绝对值,可以大于元素总个数,返回的元素可能会重复 
*如果count为正数,大于集合的元素个数,返回集合全部内容。不会返回重复的元素 

从集合中弹出一个元素 
SPOP key 

有序集合

向有序集合中加入一个元素和该元素的分数。如果存在则替换原分数。返回新增元素个数 
ZADD key score member [score member…] 

删除元素 
ZREM key member [member…] 

获得元素分数 
ZSCORE key member

获得排名在某个范围内的元素列表,从小到大排序,[WITHSCORE]表示同时返回元素的分数 
ZRANGE key start stop [WITHSCORE] 

从大到小排序 
ZREVRANG key start stop [WITHSCORE] 

获得指定分数范围的元素从小到大排序 ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count] 

获得指定分数范围的元素从大到小排序 
ZREVRANGEBYSCORE

增加某个元素的分数
INCRBY key increment member

获得某个集合中元素数量 
ZCARD key

获得指定分数范围内的元素个数 
ZCOUNT key min max

按照排名范围删除元素 
ZREMRANGEBYRANK key start stop

按照分数范围删除元素 
ZREMRANGEBYSCORE key min max

获得元素排名从小到大 
ZRANK key member

获得元素排名,从大到小 
ZREVRANK key member

计算有序集合的交集,并把结果存入destination 
ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] 

*AGGREGATE 是 SUM 时,destination键中元素的分数是每个参与计算的集合中该元素分数的合 
*MIN|MAX 时,destination键中元素的分数是每个参与计算的集合中该元素的最小值或最大值 
*WEIGHTS 设置每个集合的权重,每个集合在参与计算时元素的分数会被乘上该集合的权重 

计算有序集合的并集 
ZUNIONSTORE … 

-inf 负无穷 
+inf 正无穷 
(score 返回结果不包含值为score的元素 
Limit offset count 和sql中的用法基本相同 
socre 可以是双精度浮点数 

SORT排序

SORT命令可以对列表类型list,集合类型set和有序集合zset类型键进行排序 
SORT key 

示例: 
LPUSH lname1 1 4 6 2 5 
SORT lname1 

SADD name1 19 35 14 09 35 14 42 46 
SORT name1 

*对有序集合类型排序的时候会忽略元素的分数,只针对元素自身的值进行排序。 
按照字典顺序排列非数字元素,desc元素从大到小排序,默认从小到大排序,limit 指定返回范围 
SORT key ALPHA DESC LMIT 1 2 

BY参数

by参数的语法为by 参考键,其中参考键可以是字符串类型键或是散列类型键的某个字段(表示为键名→字段名),如果提供了BY参数,SORT命令将不再依据元素自身的值进行排序,而是对每个元素的值替换为参考键中的第一个 “*”并获取其值,然后依据该值对元素排序。 

参考键为散列类型语法 
SORT key BY 对象类型:*→字段名 DESC 

参考键为字符串类型语法 
LPUSH sortbylist 2 1 3 
SET id:1 50 
SET id:2 100 
SET id:3 70 

redis> SORT sortbylist by id:* DESC 

redis> SORT sortbylist BY id:* DESC GET id:* GET # 
GET参数不影响排序,它的作用是使SORT命令的返回结果不再是元素自身的值,GET参数的规则和BY参数一样,GET也支持字符串类型和散列类型的键,并使用*作为占位符。一个SORT命令中可以有多个GET参数而BY参数只能一个。GET # 会返回元素本身的值。 

store key:将结果保存在key键中,保存后键的类型为列表类型,如果存在则覆盖。返回sort结果的个数 
redis> SORT sortbylist BY id:* DESC GET id:* GET # STORE key 

任务队列,BRPOP|BLPOP命令与RPOP命令相比,唯一的区别是当列表中没有元素是时BRPOP命令会一直阻塞住连接,直到有新元素加入。 
BRPOP命令接收两个参数,第一个是键名,第二个是超长时间,单位是秒。当超时返回nil。参数为0时表示不限制时长。返回键名和元素值。 
可以设置多个key.会从左至右的优先顺序取第一个键中的一个元素 
BLPOP key1 [key2 …] 0 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值