redis-cli 常用命令

引言

使用编程语言和框架太多了,基础命令都忘记的差不多了,keys * 和 get * 都混淆了,获取所有键我居然用了get *,复习一下。

总结思路

结合Redis-GUI和Redis-CLI配合方式校验和复习。

系统命令

  • ping 测试连通性,响应值为PONG
  • shutdown [NOSAVE|SAVE] 关闭服务端 参数存在NOSAVE和SAVE,也就是持久化操作
  • select index 切换数据库,redis一共存在16个数据库[0-15] 通过select选择数据库,类似于use命令
  • move key db 移动key到db,也就是把选择的键移动到另一个数据库

常用命令

keys

keys pattern
keys * # 获取所有键

keys

此时如果我们尝试用pattern做一些扩展操作。
比如我们创建了con-01,con-02,con-03 键,并且通过keys con-*获取所有的con-开头的键
keys pattern

dbsize

dbsize # 获取键的个数

dbsize

exists

测试时的key结构

127.0.0.1:6379> keys *
1) "a"
2) "aa"
3) "con00"
4) "con-02"
5) "con-01"
6) "b"
7) "con-03"
exists key [key ...] # 键是否存在,可以写多个

返回值为存在的个数,如果exists后面加一个key, 返回值为1,那么说明这个键存在,返回值0则不存在
如果exists后面加两个key,返回值为0,这两个键都不存在,返回值为1,说明这两个键中只有一个键存在,2的话是都存在

exists

set

set key value [expiration EX seconds|PX milliseconds] [NX|XX] 设置值

一般不设置过期时间可以直接set key value,如果需要同时设置过期时间,如下图所示

set&ex

get

get key  # 获取键的值 # 返回值为键的值,如果返回(nil)说明键不存在

get

mset mget

mset key value [key value ...] #批量设置值
mget key [key ... ] #批量获取值

批量设置值和获取值
mset/mget

del

顾名思义,删除键,以下为测试时键的结构

1) "a"
2) "aa"
3) "con00"
4) "con-02"
5) "con-01"
6) "b"
7) "con-03"
del key [key ...]

返回值为删除key成功的个数,如果del 后面的key 不存在,不会报错,只是会在返回值有所体现。
比如我执行del a b c 根据上面的结构,我不存在c这个键,因此返回值为2
del

127.0.0.1:6379> keys *
1) "aa"
2) "con00"
3) "con-02"
4) "con-01"
5) "con-03"

type

查看键的类型,高级语言中我们知道typeof,type,其实和他们差不多。

type key

返回值:如果键存在,则返回键的类型,否则返回none

ttl

获取过期时间

ttl key

返回值-2键不存在(有些版本可能返回零), -1为永不过期,否则为剩余存活时间(秒)

image.png

expire 和 persist

expire key seconds # 设置过期时间
persist key # 设置永不过期

expire

rename

rename key newkey # rename 旧名 新名

rename

setnx

setnx key value 如果键不存在则创建,返回值1为创建成功,0为键已经存在

setex

setex

setex key seconds value

给一个键赋值,如果存在则重新赋值,并且赋予过期时间

setex

incr /decr

incr key # 键的值递增1
decr key # 键的值递减1

返回值时操作后的值

in/decr

incrby / decrby

incrby key increment #  键的值递增 increment
decrby key increment  #  键的值递减 increment

这样就可以递增指定的数了
in/decrby

append

append key value # 字符串后面追加字符

append

strlen

strlen key # 获取键值的长度

通过可视化工具设置一个中文字符串,获取其文本长度
rdm
看来一个中文字符占用三个字节
cli

getrange

getrange key start end # 截取字符串,start和end为索引

getrange

sadd 和 smembers

set 集合是无序且不重复的列表,通过sadd和smembers进行增加和查看操作

sadd key member [member ...]  # 添加元素到key中
smembers key # 查看set列表中的元素

image.png

SISMEMBER

SMEMBERS key member # 判断元素是否在key中,返回值0为不在,1为在

SMEMBERS

scard

sacrd key # 获取set中元素的个数

image.png

srem

srem key member [member ...] # 删除set中的元素,可以一次性删除多个

image.png

spop

SPOP key [count] # 随机删除set中的任意个数元素,并且返回出来

image.png

zadd

zset是有序集合,我感觉和hash很像

zadd key [NX|XX] [CH] [INCR] score member [score member ...] # 添加zset元素

zadd

zscore

zscore key member # 查看zset元素所对应成员的值

image.png

zrange

zrange key start stop [WITHSCORES] # 获取zset中一定范围内的元素

zrange
zrange.WITHSCORES

zcard

zcard key # 获取zset元素个数

zcard

zcount

ZCOUNT key min max # 获取分数在一定范围内的元素个数

zcount

zrem

zrem key member [member ...] # 删除集合中指定元素

zrem

zrank

zrank key member  # 获取成员索引信息

zrank

ZINCRBY

ZINCRBY key increment member  #  对指定元素索引值的增减

这里不存在decr方法,所以increment部分通过负数进行递减操作
ZINCRBY

lpush rpush

列表左\右插入元素

lpush key value [value ...]  #  往队列头部插入一个元素
rpush key value [value ...]  # 往队列尾部插入一个元素

lpush/rpush

lrange

lrange key start stop # 获取列表指定范围内的元素

lrange

lset

lset key index value  # 修改指定索引的值

lset

llen

llen key # 获取列表元素个数

llen

lrem

lrem key count value # 从列表中移除指定元素

count 可以这么理解它
当count = 0 时,删除所有value
当count > 0 时,删除左侧count个value
当count < 0 时,删除右侧count个value
lrem.1
lrem.2

ltrim

ltrim key start stop # ⚠️保留范围内元素

ltrim

hset hmset

hset key field value # 为字段设置值,实际上也可以设置多个
hmset key field value [field value ...] # 设置多个字段及值
hsetnx key field value # 当字段不存在时赋值

hset hmset
hsetnx

hget hmget hgetall

hget key field # 获取字段的值
hmget key field [field ...] # 获取多个键的值
hgetall key 获取所有键和值

hget.hmget
hgetall

hkeys hvals

hkeys key # 获取包含的所有键
hvals key # 获取包含的所有键对应的值

hkeys
hvals

hexists

hexists key field  # 判断集合中某个键值是否存在

hexists

hlen

hlen key # 获取key的个数

hlen

hincrby

hincrby key field increment # hash散列中某个键对应的值递增

hincrby

hdel

hdel key field [field ...]  # 删除散列中的键

hdel

评论 0

还没有评论,来说点什么吧。

提交后需要审核才会公开。