ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis常用命令

2021-09-08 11:04:19  阅读:161  来源: 互联网

标签:... 元素 redis value member field key 常用命令


字符串set

设置值[O(1)]

set key value [ex seconds] [px milliseconds] [nx|xx]
  • ex seconds:为键设置秒级过期时间。

  • px milliseconds:为键设置毫秒级过期时间。

  • nx:键必须不存在,才可以设置成功,用于添加。

  • xx:与nx相反,键必须存在,才可以设置成功,用于更新。

    redis还提供了setex和setnx

setex key seconds value
setnx key value

demo证明 nx、xx的区别

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> setnx hello world
(integer) 0
127.0.0.1:6379> set hello jedis xx
OK
127.0.0.1:6379> get hello
"jedis"
127.0.0.1:6379> set hello word
OK
127.0.0.1:6379> get hello
"word"
127.0.0.1:6379> set hello2 jedis xx
(nil)
127.0.0.1:6379>

nx仅当key不存在时才可set(应用于分布式锁),xx仅当key存在才可set

获取值[O(1)]

get key

删除[O(1)]

del key [key...]

批量[O(k)]

​ k为key长度

mset key value [k v...]
mget key [key ...]

计数[O(1)]

incr key

​ 从0自增,且为单线程无CAS开销

​ 还提供decr(自减)、incrby(自增指定数字)、 decrby(自减指定数字)、incrbyfloat(自增浮点数)[O(1)]

decr key
incrby key increment 
decrby key decrement 
incrbyfloat key increment

追加值[O(1)]

append key value

​ 向字符串尾部追加值

字符串长度[O(1)]

strlen key

redis中每个中文占用3个字节

设置并返回原值[O(1)]

getset key value

设置指定位置字符[O(1)]

setrange key offeset value

获取部分字符串[O(n)]

​ n为字符串长度

getrange key start end

查看key编码

object encoding key

哈希h

设置值[O(1)]

hset key field value
hsetnx key fiedl value

获取值[O(1)]

hget key field

删除field[O(k)]

​ k为field总数

hdel key field [field ...]

返回结果为成功删除field的个数

计算field个数[O(1)]

hlen key

批量[O(k)]

​ k为field总数

hmget key field [field ...]hmset key field value [field value ...]

判断field是否存在[O(1)]

hexists key field

获取所有field[O(n)]

​ n为field总数

hkeys key

获取所有value[O(n)]

​ n为field总数

hvals key

获取所有的field-value[O(n)]

​ n为field总数

hgetall key

自增[O(1)]

hincrby key field
hincrbyfloat key field

计算字符串长度(v3.2+)[O(1)]

hstrlen key field

列表L

添加

右插[O(k)]

​ k是元素个数

rpush key value [value ...]

左插[O(k)]

​ k是元素个数

lpush key value [value ...]

在某个元素前或后插入[O(n)]

​ n是target_val距离列表头或尾的距离

linsert key before|after target_val value

查找

列出元素(L -> R)[O(s+n)]

​ s是start的偏移量,n是start到end的范围

lrange key start endlrange key 0 -1
  • 索引下标从左到右分别是0到N-1,但是从右到左分别是-1到-N。
  • lrange中的end选项包含了自身

获取指定下标的元素[O(n)]

​ n是索引偏移量

lindex key index

获取列表长度[O(1)]

llen key

删除

左弹[O(1)]

lpop key

右弹[O(1)]

rpop key

删除指定元素[O(1)]

lrem key count value
  • count>0,从左到右,删除最多count个元素。

  • count<0,从右到左,删除最多count绝对值个元素。

  • count=0,删除所有。

按照索引范围保存列表[O(n)]

​ n是要保存元素的个数,即 end - start + 1

ltrim key start end

修改指定索引下标的元素[O(n)]

​ n是索引偏移量

lset key index newValue

阻塞操作[O(1)]

blpop key [key ...] timeout 

​ timeout:阻塞时间(单位:秒)

  • 列表为空
    • 如果为0,则一直阻塞。
    • 如果此期间添加了数据,客户端立即返回
  • 列表不为空
    • 客户端会立即返回。
brpop key [key ...] timeout
  • 如果是多个键,那么brpop会从左至右遍历键,一旦有一个键能弹出元素,客户端立即返回
  • 如果多个客户端对同一个键执行brpop,那么最先执行brpop命 令的客户端可以获取到弹出的值。
  • (此特性可用于发布订阅)

集合s

集合内操作

添加

sadd key element [element ...]

​ 返回结果为添加成功的元素个数

删除

srem key element [element ...]

​ 返回结果为成功删除元素个数

计算元素个数[O(1)]

​ 直接用 Redis内部的变量,不会遍历集合所有元素

scard key

判断元素是否在集合中[O(1)]

sismember key element

随机返回指定个元素[O(count)]

srandmember key [count]

随机弹出元素[O(1)]

spop key

获取所有元素

smembers key

smembers和lrange、hgetall都属于比较重的命令,如果元素过多存在阻 塞Redis的可能性,这时候可以使用sscan来完成

集合间操作

多个集合的交集

sinter key [key ...]

多个集合的并集

suinon key [key ...]

多个集合的差集

sdiff key [key ...]

交集、并集、差集的结果保存

sinterstore destination key [key ...] 
suionstore destination key [key ...] 
sdiffstore destination key [key ...]

有序集合z

集合内

添加成员

zadd key score member [score member...]

Redis3.2为zadd命令添加了nx、xx、ch、incr四个选项:

  • nx:member必须不存在,才可以设置成功,用于添加。

  • xx:member必须存在,才可以设置成功,用于更新。

  • ch:返回此次操作后,有序集合元素和分数发生变化的个数

  • incr:对score做增加,相当于后面介绍的zincrby。

  • 有序集合相比集合提供了排序字段,但是也产生了代价,zadd的时间 复杂度为O(log(n)),sadd的时间复杂度为O(1)

计算成员个数[O(1)]

zcard key

计算某个成员的分数[O(1)]

zscore key member

计算成员的排名

zrank key member # 从低到高
zrevrank key member

删除成员

zrem key member [member ...]

增加成员的分数

zincrby key increment member

返回指定排名范围的成员

zrange key start end [withscores]
zrevrange key start end [withscores]

返回指定分数范围的成员

zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores] [limit offset count]

​ min和max还支持开区间(小括号)和闭区间(中括号),-inf和 +inf分别代表无限小和无限大

返回指定分数范围成员个数

zcount key min max

删除指定排名内的升序元素

zremrangebyrank key start end

删除指定分数范围的成员

zremrangebyscore key min max

集合间

交集

zinterstore destination numkeys key [key ...] [weights weight [weight ...]]
[aggregate sum|min|max]
  • destination:交集计算结果保存到这个键。

  • numkeys:需要做交集计算键的个数。

  • key[key...]:需要做交集计算的键。

  • weights weight[weight...]:每个键的权重,在做交集计算时,每个键中 的每个member会将自己分数乘以这个权重,每个键的权重默认是1。

  • aggregate sum|min|max:计算成员交集后,分值可以按照sum(和)、 min(最小值)、max(最大值)做汇总,默认值是sum。

并集

zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]

标签:...,元素,redis,value,member,field,key,常用命令
来源: https://www.cnblogs.com/woooodlin/p/redis3_api_order.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有