Redis命令

    xiaoxiao2021-03-25  61

    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 

    转载请注明原文地址: https://ju.6miu.com/read-37199.html

    最新回复(0)