目录
- 基础命令
- 十大数据类型
- 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,返回原值 |
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:空闲时间