http://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F202005%2F08%2F20200508102713_L8aCB.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1649077062&t=40b7b14053ef546a57de4934b9442cbe",

Redis常用命令

Redis 命令不区分大小,但 key 区分。

一、管理 及 通用命令

系统命令

## 帮助命令 
help @类型
help @string

DB 管理命令

## 切换数据库【0-15】,默认为0
select dbindex   
## 查看当前数据库key的数量
dbsize
## 清空当前库
flushdb
flushdb  async
## 清空所有库
flushall
flushall  async

key 操作命令

## 查看当前库所有 key
keys *
## 查看当前库是否存在 key
exists key
## 查看 key 的类型
type key
## 查看 key 过期时间(秒),-1表示永不过期,-2表示已过期
ttl key
## 为 key 设置过期时间
expire key 秒钟
## 删除指定的key数据。删除存在key返回 1,删除不存在key返回 0
del key
## 非阻塞删除,将 key 从 keyspace 元数据删除,真正数据删除在异步中执行
unlink key
## 移动 key 到给定的数据库 DB 中
move key dbindex[0-15]

scan 操作命令

  • 当key过多时,避免使用keys * ,而是使用 scan
  • 命令格式:scan cursor match pattern count count
    • cursor:游标,第一次查询从 0 开始,后续查询使用上一次查询返回结果中的游标,如果上一次查询返回游标为 0, 则遍历结束。
    • match pattern :匹配模式,匹配所有使用:*
    • count count:指定从数据集中返回元素个数,默认10 ,不保证个数的一致性,只能大概率符合。
  • 命令返回格式:
    • 下一次查询游标数
    • 本次查询结果集
  • scan遍历为避免 字典扩容和缩容 对槽位遍历的重复和遗漏,采用了高位进位加法。
scan  match  *  count   1

String 类型操作

## 【新增】
## 新增 key (永不过期)
set  key  value

## 新增 key,过期时间分别为:10s 、1000ms
set  key  value  EX  10
set  key  value  PX  1000

## 新增 key,以秒、毫秒时间戳的方式设置 key 过期时间点
## linux获取当前时间秒时间戳:date +%s
set  key  value  PXAT  1710299373
set  key  value  PXAT  1710299373000

## 【编辑】
## 编辑 key 值为 value 并保留 key 历史的过期时间
set  key  value  keepttl
## key 不存在时设置。成功返回:0K,失败返回:(nil)
set  key  value  NX
## key 存在时设置。成功返回:OK,失败返回:(nil)
set  key  value  XX

## 设置 key 新值 并 获取旧值,旧值不存在返回:(nil)
set key newValue get
getset key newValue

## 向 key 对应字符串 value 后追加 value1
append key value

## value 为数字型可进行 数值增减 操作
## 为 key 的 value +1
INCR key
## 为 key 的 value +increment
INCRBY key increment
## 为 key 的 value -1
DECR key
## 为 key 的 value -increment
DECRBY key decrement

## 【查询】
## 获取 key 对应 value 的字符串长度
strlen key

## 获取 | 设置 指定区间范围内的值
set  key 0123456789
## 获取全部,返回:0123456789
getrange key 0 -1
## 获取 前四位(包左也包右),返回:0123
getrange key 0 3
## 设置指定区间范围内的值,新值为:abc3456789
setrange  key  1  abc

## 批量操作
mset  key1  value1  key2  value2
mget  key1  key2
## 要么全成功,要么全失败。返回成功插入个数
msetnx

List 类型操作

## 原理:双端链表
## 应用:栈、队列、消息队列

## 【新增】 
lpush  list_l  1  2  3  4  5  
rpush  list_r  1  2  3  4  5

## 【查询】 
## 查询list 元素个数
llen  list_l

## 查询 list:指定范围批量读取
lrange  list_l  0  -1  ## 输出  5 4 3 2 1
lrange  list_r  0  -1  ## 输出  1 2 3 4 5

## 查询list:指定索引单个读取
lindex  list_l  1  ## 输出  5,没有数据输出 (nil)

## 【编辑】
## 编辑 查看 list 的值并删除(弹出)
lpop  list_l  ## 还剩数据  4 3 2 1
rpop  list_l  ## 还剩数据  4 3 2

## 编辑 截取指定范围的值后赋值给 key 的 value
ltrim  list_l  1  2  ## 还剩数据  3 2

## 编辑 移除 list_l 最后一个元素,将该元素添加到 list_r 并返回该元素
rpoplpush  list_l  list_r  ## list_l:3;list_r:3 1 2 3 4 5

## 编辑 替换 列表 指定 下标 位置数据为 指定值
lset  list_r  3  6  ## 还剩数据  3 1 2 6 4 5

## 编辑 在 指定值 前插入 新值
linsert  list_l  before  1   2  ## 还剩数据  2  1,成功插入返回 列表总个数
## 编辑 在 指定值 前后插入 新值
linsert  list_l  after   1   3  ## 还剩数据  2  1  3,若指定值在列表中存在多个,返回 -1

## 编辑 list。从左到右遍历,删除 list_l 中 2 个 值为 1 的元素,返回值为实际删除的数量。
lrem  list_l  2  1
lrem  list_l  0  1  ## 0 标识删除 list_l 中所有值为 1 的元素

Hash 类型操作

## 【新增】
hset  user:001  id  001  name  zhangsan  age  18  ## 存在 key 更新,不存在 新增
hmset  user:001  id  001  name  zhangsan  ## hset 也可实现多个数据添加,且 hmset 已被废弃

## 【查询】
hget  user:001  name  
hmget  user:001  id  name 
hmgetall  user:001 
## 返回 user:001 中 value 中的 k-v 键值对数量
hlen  user:001   
## 判断 user:001  中是否存在 name ,存在返回 1 不存在 返回 0
hexists  user:001   name  
## 返回 hash 中的 所有key || value
hkeys  user:001 
hvals   user:001 

## 【编辑】
## 将 hash 中 指定 key 对应的 value  增加 n(整数)
hincrby  user:001  age  2   ## 返回  20
hincrby  user:001  age  -2  ## 返回  18
## ## 将 hash 中 指定 key 对应的 value  增加 n(浮点数)
hincrbyfloat  user:001  age  2.0

## 存在无效,不存在赋值
hsetnx  user:001  age  18  ## 成功返回 1,失败返回 0

## 【删除】
hdel  user:001  id  name

Set 类型操作

## 【新增】
sadd  set1  v1  v2  v3  
sadd  set1  v3  v4

## 【查看】
## 遍历 集合 中的所有元素
smembers set1
## 查看 集合 中元素的个数
scard  set1
## 判断 v1  是否在  key1 集合中
sismember  set1  v1
## 集合中随机展现指定个数的元素,元素不删除
srandmember  set1  3

## 【编辑】
## 返回成功删除的个数 
srem  set1  v1  v2 
## 从集合中随机弹出一个元素,并删除
spop  set1
## 将 key1 集合中存在的 v1 赋给 key2 集合
smove  set1  set2  v1

## 【集合的运算】
## 计算 set1 和 set2 差集,属于 set1 但不属于 set2
sdiff   set1  set2
## 计算 set1 和 set2 并集,属于 set1 或属于 set2
sunion  set1  set2
## 计算 set1 和 set2 交集,属于 set1 且属于 set2
sinner  set1  set2

Zset 类型操作

## 【新增】
sadd  set1  v1  v2  v3  
sadd  set1  v3  v4

## 【查看】
## 遍历 集合 中的所有元素
smembers set1
## 查看 集合 中元素的个数
scard  set1
## 判断 v1  是否在  key1 集合中
sismember  set1  v1
## 集合中随机展现指定个数的元素,元素不删除
srandmember  set1  3

## 【编辑】
## 返回成功删除的个数 
srem  set1  v1  v2 
## 从集合中随机弹出一个元素,并删除
spop  set1
## 将 key1 集合中存在的 v1 赋给 key2 集合
smove  set1  set2  v1

## 【集合的运算】
## 计算 set1 和 set2 差集,属于 set1 但不属于 set2
sdiff   set1  set2
## 计算 set1 和 set2 并集,属于 set1 或属于 set2
sunion  set1  set2
## 计算 set1 和 set2 交集,属于 set1 且属于 set2
sinner  set1  set2

ZSet 类型操作

## 【增加】
##zadd  zsetkey  score1  v1  score2  v2
zsdd  score  21  zhang  32  li

## 【查看】
## zrange key start stop [withscores]
## 按照元素分从小到大 返回索引 start 到 stop 之间的所有元素
zrange  score  0  -1
zrange  score  0  -1  withscores
## zrevrange key start stop [withscores]
## 按照元素分从大到小 返回索引 start 到 stop 之间的所有元素
zrevrange  score  0  -1
zrevrange  score  0  -1  withscores
## ZRANGEBYSCORE key min max 【withscores】【limit offset count】
## 获取指定分数范围的元素,在min和max前加 ( 表示不包含,limit 分页
zrangebyscore  score  60  100
zrangebyscore  score  60  100  withscores
zrangebyscore  score  (60  100  withscores
zrangebyscore  score  60  100  withscores  limit  0  5  
## zscore key member :获取指定元素分数
zscore  score  zhang
## zcard  key : 统计集合中的数量
zcard  score
## zcount  key min max : 统计 指定分数内 元素个数
zcount  score  60  100 
## zrank key member [withscore] :通过 value 获取 正序 下标值
zrank  score  zhang
## zrevrank key member [withscore] :通过 value 获取 逆序 下标值
zrevrank  score  zhang

## 【删除】
## zrem key member [member ...] : 根据 value 值删除元素
zrem  score  zhang  li
## zincrby key increment member : 为元素 member  增加 increment 分数
zincrby  score  10  zhang

## zmpop  numkeys  key [key ...] MIN|MAX [COUNT count]
## numkeys :key 的数量;MIN|MAX:最大、最小;COUNT 弹出个数,默认一个。
## 从键名列表中第一个非空排序集中弹出一个或多个元素的 成员分数对
zsdd  score_1   1  a  2  b  3  c  4  d  
zsdd  score_2   0  e
zmpop  1  score_1  min  count  2  ## 输出 1 a 2 b
zmpop  2  score_1  score_1 min  count  2  ## 输出 0 e 1 a 

bitmap 位图 类型操作

bitmap 类型底层是 string。

## 【setbit  key  offset  value 】为 key 的 offset 位置设置 value
## 【getbit  key  offset 】获取 key 的 offset 位置的 value
## 【bitcount  key  start  end 】获取 key 的 start 到 end 之间值为 1 的数量
bitcount  uid:loging  1  10
bitcount  uid:loging  0  -1
## 【strlen key 】统计 key 数据占用字节数

## 【bitop operation(AND|OR|XOR|NOT) destkey key1 [key2 ...]】
## 对 key1 key2...中的数据按位进行 逻辑并 | 逻辑或 | 逻辑异或 | 逻辑非 结果保存至 destkey
setbit  Monday  1001  1
setbit  Monday  1002  1
setbit  Monday  1003  0
setbit  Monday  1004  0
setbit  Tuesday  1001  1
setbit  Tuesday  1002  0
setbit  Tuesday  1003  1
setbit  Tuesday  1004  0

bitop  AND  destkey  Monday  Tuesday  ## 输出:1  0  0  0
bitop  OR  destkey  Monday  Tuesday  ## 输出:1  1  1  0
## XOR 异或 相同为 0 不同为1
bitop  XOR  destkey  Monday  Tuesday  ## 输出:0  1  1  0
bitop  NOT  destkey  Monday   ## 输出:0 0 1 1

HyperLogLog 基数统计 类型操作

## 【pfadd  key  element1[element2...]】添加成功返回 1
pfadd  wuv  2 4 6 6 8 9
## 【pfcount key】统计 集合基数估算值
pfcount  wuv   ## 返回 5
## 【pfmerge destkey  sourcekey1[sourcekey2...]】合并多个基数至  destkey
pfadd  muv  1  2  2
pfmerge  ouv  wuv  muv
pfcount  ouv    ## 返回 7

GEO 地理空间 类型操作

GEO类型底层是 zset。

## 【GEOADD key longitude latitude member [longitude latitude member]】
## GEOADD  key名称 经度  纬度   位置名称
GEOADD city  116.403963  39.915119  "天安门"  116.403414  39.924091  "故宫" 
 116.024067  40.362639  "长城"

## 【GEOPOS  key  member  [member]】
GEOPOS city 天安门 故宫

## 【GEODIST key member1 member2 [M|KM|FT|MI]】
## 计算 member1 、member2两个位置之间的距离,单位:m-米、km-千米、ft-英寸、mi-英里
GEODIST  city  member1  member2

## 【GEORADIUS key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]】
## 返回 key 中以经度 longitude 维度 latitude 为中心距离 radius(M|KM|FT|MI)范围内的位置坐标。
## WITHDIST:返回位置距离中心点的距离;WITHCOORD:返回位置经纬度;WITHHASH:返回位置坐标的GEOHASH;COUNT:限制返回记录数。
GEORADIUS  city  

##【GEORADIUSBYMEMBER key member radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]】

##【GEOHASH  key  member】
## 计算 key 中 member 坐标的 hash 值

bitfield 位域 类型操作

## 位域(Bitfield)是一种用于操作位图的高级命令。通过位域命令,可以对位图中的指定位进行读取、设置、清除等操作。

Stream 流 类型操作

## TODO
posted @   DeepInThought  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示