目录

  • 基础命令
  • 十大数据类型
  • String 字符串
  • List 列表
  • Set 集合
  • Hash 哈希
  • Zset(Sorted set) 有序集合
  • Bitmap 位图
  • HyperLogLog 基数统计
  • Geospatial 地理空间
  • Stream 流
  • bitfield 位域
  • 事务
  • RDB持久化手动触发保存
  • AOF持久化手动触发
  • 主从复制
  • 集群
  • 查询More key
  • 调试


基础命令

keys *
exists k1
type k1
del k1
unlink k1
expire k1 20
ttl k1
move key dbindex
select dbindex
dbsize
flushdb
flushall
auth password
memory usage k1

命令

解释

keys *

查看当前库所有的key

exists key

判断某个key是否存在

type key

查看keyd的类型

del key

删除指定的key及数据

unlink key

非阻塞删除,仅将key从keyspace元数据中删除,真正的删除会在后续异步中操作

ttl key

查看过期秒数,-1表永不过期,-2表已过期

expire key 秒数

给key设置过期时间

move key dbindex [0-15]

将当前库的key移到指定的库中

select dbindex

切换数据库【0-15】,默认为0

dbsize

查看当前库key的数量

flushdb

清空当前库

flushall

清空全部库

auth password

输入密码验证,未配置密码则不需要

memory usage key

查询key和value在RAM中所占字节数

十大数据类型

String 字符串

命令

解释

set key value [NX XX] [GET] [EX seconds PX milliseconds EXAT unix-time-seconds PXAT unix-time-milliseconds KEEPTTL]

设置key

get key

获取值

mset key1 value1 key2 value2…

设置1或多个key

mget key1 key2 …

获取给定key的值

msetnx key1 value1 key2 value2…

同事设置1或多个key,只在所有key都不存在时成功

getrange key index1 index2

获取指定区间范围内的值,0到-1表全部

setrange key index value

设置从index开始改为value

incr key

value加1

incrby key increment

value 加整数increment,可以是负数

incrbyfloat key increment

value 加浮点数increment

decr key

value 减1

decrby key decrement

value减整数decrement

strlen key

获取value的长度

append key value

在key的值后面加value

setnx key value

只在 key 不存在时设置 key和值

setex key 过期秒 value

设置带过期时间的key,动态设置

getset key value

先get后set,返回原值

redis 添加数组类型 redis添加数据命令_redis

set k1 v1
get k1
append k1 234
strlen k1
setnx k2 1
incr k2
decr k2
incrby k2 10
decrby k2 10
mset m1 n1 m2 n2 m3 n3
mget m1 m2 m3
msetnx mm1 nn1 mm2 nn2 mm3 nn3
getrange k1 0 3
setrange k1 6 add001
setex kk1 20 vv1
getset k1 v98765

List 列表

#从左边/右边插入一个或多个值。
lpush  lk1 v12 v12 v13 v14 
rpush  lk2 v21 v22 v23 v24 

#从左边/右边吐出一个值。值在键在,值光键亡。
lpop lk2
rpop lk1
#从<key1>列表右边吐出一个值,插到<key2>列表左边。
rpoplpush  lk2 lk1
# 按照索引下标获得元素(从左到右)
lrange <key><start><stop>
# 0左边第一个,-1右边第一个,(0-1表示获取所有)
lrange mylist 0 -1
# 按照索引下标获得元素(从左到右)
lindex <key><index>
# 获得列表长度 
llen lk1
# 在<value>的后面插入<newvalue>插入值
linsert <key>  before <value><newvalue>
# 从左边删除n个value(从左到右)
lrem <key><n><value>
# 将列表key下标为index的值替换成value
lset<key><index><value>

命令

解释

lpush key value1 value2 …

将value插入头部

rpush key value1 value2 …

将value插入尾部

lrange key index1 index2

获取指定范围内的元素;0 -1为全部

lpop key

从左边删除一元素并返回

rpop key

从右边删除一元素并返回

lindex key index

获取key中对应索引的元素

llen key

获取key中元素的个数

lrem key 数字N value

删除N个值为value的元素,N为0则删全部value

ltrim key index1 index2

截取索引范围内的值再赋值给key

rpoplpush key1 key2

将key1的最后一个元素移到key2列表并返回这个元素

lset key index value

根据索引index更新为value

linsert key before/after 已有值 新值

在某个已有值的前/插入新的值

Set 集合

命令

解释

sadd key value1 value2 …

将元素加入到 key 中,已经存在的元素会忽略

smembers key

取出该key的所有值

sismember key value

判断key是否为含有value,有1,没有0

scard key

返回key的元素个数

srem key value1 value2 …

删除key中的元素

spop key

随机从key中弹出并删除一个值

srandmember key n

随机从keyt中取出n个值,不会从集合中删除

smove key1 key2 value

把key1中value移动到key2

sinter key1 key2 …

返回key的交集元素

sintercard numkeys key1 key2 … [limit N]

返回key的交集个数(Redis 7)

sunion key1 key2 …

返回key的并集元素

sdiff key1 key2 …

返回两个key的差集元素(在key1中不在key2)

Hash 哈希

命令

解释

hset key field value

给key中的field键赋值value

hget key field

从key中field取出 value

hmset key field1 value1 field2 value2 …

批量设置hash的值

hmget key field1 field2 …

获取key中给定field的值

hgetall key

获取key中所有的filed和value

hdel key field1 field2 …

删除key中的field

hlen key

查看key 中所有 field的数量

hexists key field

查看key 中是否存在 field

hkeys key

列出key中的所有field

hvals key

列出key中的所有value

hincrby key field increment

为 key 中的域 field 的值加上整数increment

hincrbyfloat key field increment

为 key 中的域 field 的值加上浮点数increment

hsetnx key field value

将 key 中的 field 的值设置为 value ,field 不存在时赋值,存在则无视

Zset(Sorted set) 有序集合

命令

解释

zadd key score1 value1 score2 value2…

将value及其score值加入到 key中

zrange key start stop [WITHSCORES]

按分数从小到大排序,返回key 中下标在start和stop间的元素;带WITHSCORES,可以让分数一起和值返回到结果集

zrevrange key start stop [WITHSCORES]

按分数从大到小排序,返回key 中下标在start和stop间的元素;带WITHSCORES,可以让分数一起和值返回到结果集

zrangebyscore key min max [withscores limit offset count]

返回key中所有score介于 min 和 max 之间(包括等于 min 或 max )的成员。成员按 score 值递增(从小到大)次序排列

zrevrangebyscore key maxmin [withscores] [limit offset count]

同上,改为从大到小排列

zincrby key increment value

为元素的score加上增量

zrem key value

删除key中指定value的元素

zcount key min max

统计key,分数区间内的元素个数

zrank key value

返回value在key中的排名,从0开始

zrevrank key value

返回value在key中的逆序排名

Bitmap 位图

命令

解释

setbit key offset value

设置key的偏移位的值,值只能0或1,偏移量从零开始

getbit key offset

查询key的偏移位的值,偏移量从零开始

strlen key

统计字节数量

bitcount key

统计key中含有1的数量

bitop and 变量名key key1 key2 …

统计给定key中相同偏移量上是1的数量,使用bitcount 变量名key 查询

HyperLogLog 基数统计

命令

解释

pfadd key value1 value2 …

添加元素到key

pfcount key

查询key中的数量

pfmerge 新key key1 key2 …

合并到新key

Geospatial 地理空间

命令

解释

geoadd key 经1 纬1 名称1 经2 纬2 名称2…

添加元素到key,名称加双引号

geopos key 名称1 名称2…

查询key中的名称经纬度

geohash key 名称1 名称2…

返回名称的geohash算法生成的base32编码值

geodist key 名称1 名称2 [m km ft mi]

返回key中名称间的距离

georadius key 经 纬 距离 单位 withdist withcoord count 数量N withhash desc

以给定的经纬度为中心, 返回key中与中心的距离不超过给定最大距离的位置元素。WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。WITHCOORD: 将位置元素的经度和维度也一并返回。WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。COUNT 限定返回的记录数。

georadiusbymember key 名称 距离 单位 withdist withcoord count 数量N withhash desc

以key中的名称为中心, 返回key中与中心的距离不超过给定最大距离的位置元素。

geoadd china:city 121.47 31.23 shanghai
geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen 116.38 39.90 beijing
geopos  china:city shanghai
geodist<key><member1><member2>  [m|km|ft|mi ]  获取两个位置之间的直线距离
m 表示单位为米[默认值]。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位

georadius<key>< longitude><latitude>radius  m|km|ft|mi   以给定的经纬度为中心,找出某一半径内的元素
经度 纬度 距离 单位

Stream 流

bitfield 位域

事务

命令

解释

multi

表示事务的开始

discard

取消事务,放弃执行事务块内的所有命令

exec

执行所有事务块内的命令

watch key1 key2 …

监视key,若事务执行前key被其他命令改动,那事务将被打断;执行exec命令或关闭客户端都会取消监视

unwatch

取消watch命令对所有key的监视

watch k1
multi
set k1 10 # 另一个客户端执行此行
set k1 20
exec
# 返回nil,k1的value为10,乐观锁的功能;若在exec前执行unwatch,k1的value为20

RDB持久化手动触发保存

即使未开启RDB持久化的配置,也能手动触发成功

命令

解释

save

阻塞式持久化,执行期间不可处理其他命令,线上禁止使用

bgsave

fork一子线程非阻塞式异步持久化

lastsave

最后一次成功执行快照时间戳(终端执行 date -d @1687830596)

save
bgsave
lastsave

AOF持久化手动触发

配置文件 appendonly yes

bgrewriteaof

主从复制

命令

解释

info replication

查看此服务的主从关系及配置信息

replicaof 主库ip 主库port

一般配置在文件中,不知道和下一条的区别在哪

slaveof 主库ip 主库port

修改要同步的主库,重启服务后失效

slaveof no one

取消主从关系,成为master,重启服务后失效

集群

命令

解释

info replication

查看此服务的主从关系及配置信息

cluster info

查看集群信息

cluster nodes

查看集群结点的关联信息

cluster keyslot key

查看key存放的槽位值

cluster failover

此slave切换为master,原master成为cluster

cluster countkeysinslot 槽位值

查看槽位值的占用情况,1是占用,0是未占用

查询More key

scan num1 match * count num2 num1 为游标的数字,第一次使用为0,根据执行结果第一行的数字再次修改;num2 为返回的记录数;* 为匹配模式

scan 0
scan 0 match *u*m*r* count 10

调试

| 命令 | 解释 |
|object encoding key|查看编码|
|debug object key|调试命令,查看key的内部结构,需在配置文件开启,见下|

开启: enable-debug-command local
返回结果解释
value at: 内存地址
refcount: 引用次数
encoding: 物理编码类型
serializedlength: 序列化后的长度(注意这里的长度是序列化后的长度,保存为rdb文件时使用了该算法,不是真正存贮在内存的大小),会对字串做一些可能的压缩以便底层优化
lru:记录最近使用时间戳
lru_seconds_idle:空闲时间