Redis常用操作

一、全局命令

0、配置操作

①添加设置

config set parameter value

②获取设置

config get parameter

③重置INFO命令统计的一些计算器

config resetstat
# 被重置的数据如下:
#   Keyspace hits
#   Keyspace misses
#   Number of commands processed
#   Number of connections received
#   Number of expired keys

1、DB库操作

①切换库

select db
# 16个DB库,0-15.默认0库

2、客户端操作

①查询客户端连接信息

client list

②剔除杀掉指定客户端

client kill ip:port

③返回当前连接名

client getname
# 返回当前连接由CLIENT SETNAME设置的名字。如果没有用CLIENT SETNAME设置名字,将返回一个空的回复。

④返回当前连接的ID

client id
# 每个ID符合如下约束:
#  1.永不重复。当调用命令CLIENT ID返回相同的值时,调用者可以确认原连接未被断开,只是被重用 ,因此仍可以认为是同一连接
#  2.ID值单调递增。若某一连接的ID值比其他连接的ID值大,可以确认该连接是较新创建的

3、全局数据操作

①清除数据

# 清除DB中的所有数据
flushdb 
# 清除所有库中的数据
flushall

4、监控统计操作

①实时显示接受到的命令

monitor

②Redis服务器与统计信息

info [section]

# section:
#   1.server: Redis服务器的一般信息
#   2.clients: 客户端的连接部分
#   3.memory: 内存消耗相关信息
#   4.persistence: RDB和AOF相关信息
#   5.stats: 一般统计
#   6.replication: 主/从复制信息
#   7.cpu: 统计CPU的消耗
#   8.commandstats: Redis命令统计
#   9.cluster: Redis集群信息
#   10.keyspace: 数据库的相关统计
# all: 返回所有信息
# default: 值返回默认设置的信息
# 如果没有使用任何参数时,默认为default。

info memory指标

指标 含义
used_memory 由 Redis 分配器分配的内存总量,包含了redis进程内部的开销和数据占用的内存,以字节(byte)为单位,即当前redis使用内存大小。
used_memory_human 已更直观的单位展示分配的内存总量。
used_memory_rss 向操作系统申请的内存大小,与 top 、 ps等命令的输出一致,即redis使用的物理内存大小。
used_memory_rss_human 已更直观的单位展示向操作系统申请的内存大小。
used_memory_peak redis的内存消耗峰值(以字节为单位),即历史使用记录中redis使用内存峰值。
used_memory_peak_human 以更直观的格式返回redis的内存消耗峰值
used_memory_peak_perc 使用内存达到峰值内存的百分比,used_memory/ used_memory_peak) 100%,即当前redis使用内存/历史使用记录中redis使用内存峰值100%
used_memory_overhead Redis为了维护数据集的内部机制所需的内存开销,包括所有客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog。
used_memory_startup Redis服务器启动时消耗的内存
used_memory_dataset 数据实际占用的内存大小,即used_memory-used_memory_overhead
used_memory_dataset_perc 数据占用的内存大小的百分比,100%*(used_memory_dataset/(used_memory-used_memory_startup))
total_system_memory 整个系统内存
total_system_memory_human 以更直观的格式显示整个系统内存
used_memory_lua Lua脚本存储占用的内存
used_memory_lua_human 以更直观的格式显示Lua脚本存储占用的内存
maxmemory Redis实例的最大内存配置
maxmemory_human 以更直观的格式显示Redis实例的最大内存配置
maxmemory_policy 当达到maxmemory时的淘汰策略
mem_fragmentation_ratio 碎片率,used_memory_rss/ used_memory。ratio指数>1表明有内存碎片,越大表明越多,<1表明正在使用虚拟内存,虚拟内存其实就是硬盘,性能比内存低得多,这是应该增强机器的内存以提高性能。一般来说,mem_fragmentation_ratio的数值在1 ~ 1.5之间是比较健康的。详解
mem_allocator 内存分配器
active_defrag_running 表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理)详解
lazyfree_pending_objects 0表示不存在延迟释放的挂起对象

③查询键值在内存中占用的字节数

memory usage key
# 返回的结果是key的值以及为管理该key分配的内存总字节数。对于嵌套数据类型,可以使用选项SAMPLES,其中COUNT表示抽样的元素个数,默认值为5。当需要抽样所有元素时,使用SAMPLES 0

# 如上,实际数据为空,但是存储时仍然耗费了一些内存,这些内存用于Redis 服务器维护内部数据结构。随着key和value的增大,内存使用量和key 大小基本成 线性关系。

④获取最后一次同步磁盘的时间

lastsave
# 执行成功时返回UNIX时间戳

5、慢日志操作

Redis慢查询日志是一个记录超过指定执行时间的查询的系统。 这里的执行时间不包括IO操作,比如与客户端通信,发送回复等等,而只是实际执行命令所需的时间(这是唯一在命令执行过程中线程被阻塞且不能同时处理其他请求的阶段)。

慢查询日志在内存中堆积,因此不会写入一个包含慢速命令执行信息的文件。 这使得慢查询日志非常快,你可以开启所有命令的日志记录(设置slowlog-log-slower-than参数值为零),但性能较低。

①获取慢日志

slowlog get [条数]

每一个条目由四个字段组成:

  • 每个慢查询条目的唯一的递增标识符。
  • 处理记录命令的unix时间戳。
  • 命令执行所需的总时间,以微秒为单位。
  • 组成该命令的参数的数组。

条目的唯一ID可以用于避免慢查询条目被多次处理(例如,你也许有一个脚本使用每个新的慢查询日志条目给你发送报警邮件)。

条目ID在Redis服务器运行期间绝不会被重置,仅在Redis服务重启才重置它。

②设置慢查询日志

config set _slowlog-log-slower-than_ milliseconds
# Redis命令的执行时间超过多少微秒将会被记录。 请注意,
#   1.负数将会关闭慢查询日志
#   2.0将强制记录每一个命令
config set _slowlog-max-len_ 慢日志条目最大条数
# 设置慢查询日志的长度。 最小值是0。 当一个新命令被记录,且慢查询日志已经达到其最大长度时,将从记录命令的队列中移除删除最旧的命令以腾出空间。

③获取慢查询日志的最新条目ID

slowlog len

④重置慢查询日志

slowlog reset
# 删除后,信息将永远丢失

二、Key操作

查找key

查找所有符合给定模式pattern(正则表达式)的 key

key 
# 支持的正则表达模式:

# h?llo 匹配 hello, hallo 和 hxllo
# h*llo 匹配 hllo 和 heeeello
# h[ae]llo 匹配 hello 和 hallo, 但是不匹配 hillo
# h[^e]llo 匹配 hallo, hbllo, … 但是不匹配 hello
# h[a-b]llo 匹配 hallo 和 hbllo

查询key的值

get key
# 不存在则返回nil

批量获取key的值

mget key [key .....]
# mget 1 2 3

查询当前DB的key总数

dbsize

检查key是否存在

exist key
# 存在返回1,不存在返回0

查询key的过期时间

ttl key # 查询键在多少秒后过期 (>0 剩余过期时间;-1 没有设置过期时间;-2 键不存在)
pttl key # 查询键在多少毫秒后过期

查询key的数据类型

type key (如果键不存在,则返回none)

删除Key

del key

统计Key

scan cursor match 正则表达式

三、String类型键的操作命令

1、DDL

①设置键值

set key value [ex] [px] [nx|xx]
# ex 秒级过期时间
# px 毫秒级过期时间

②设置键值并返回原值

getset key value

③批量设置键值

mset key value [key value]
# mset 1 a 2 b 3 c

④设置键的过期时间

expire key senconds/milliseconds # 设置key在second秒/milliseconds毫秒后过期
expire key timestamp/milliseconds-timestamp # 设置key在秒级时间戳/毫秒时间戳戳后过期

⑤重命名键

rename key newkey

⑥追加内容到String类型键的末尾

append key value

2、DQL

①查询string类型键的长度

strlen key

②查询String类型键指定长度的值

getrange key start end
# start和end指从0开始的开始与结束偏移量

四、Hash操作命令

1、DDL

①创建hash字段

hset key field value

②批量创建hash字段

hmset key field value [field value ...]

③删除hash中一个或多个field

hdel key field [key field ....]

2、DQL

①获取字段的值

hset get key field

②批量获取字段的值

hmget key field [field ...]

③获取所有字段的数量

hlen key

④获取所有的字段

hkeys key

⑤获取指定字段的长度

hstrlen key field

⑥获取所有的字段值

hvals key

⑦判断是否存在field

hexists key field

⑧读取所有的field与值

hgetall key

五、List操作命令

1、DDL

①将一个或多个的值插入列表的头部

lpush key value1 [value2 ...]
# 如果 key 不存在,那么在进行 push 操作前会创建一个空列表。
# 元素是从最左端的到最右端的、一个接一个被插入到 list 的头部。
# redis版本>= 2.4才可以接受多个 value 参数。< 2.4 的 Redis 只能每条命令 push 一个值。
# 返回值是在 push 操作后的 list 长度。

lpushx key value1 [value2 ...]
# 只有当 key 已经存在并且存着一个 list 的时候,在这个 key 下面的 list 的头部插入 value。

② 将一个或多个的值插入列表的尾部

rpush key value1 [value2 ...]
# 如果 key 不存在,那么会创建一个空的列表然后再进行 push 操作
# 元素是从左到右一个接一个从列表尾部插入
# 返回值是在 push 操作后的列表长度。

rpushx key value1 [value2 ...]
# 只有当 key 已经存在并且存着一个 list 的时候,在这个 key 下面的 list 的尾部部插入 value。

③插入已有列表某个元素前面

linsert key before value new_value

④弹出列表第一个元素并返回元素的值

lpop key
# 返回第一个元素的值,或者当 key 不存在时返回 nil。

⑤弹出列表最后一个元素并返回元素的值

rpop key
# 当 key 不存在的时候返回 nil。

⑥弹出列表中的最后一个元素,并将其追加到另外一个列表的头部

rpoplpush list1 list2
# 如果 list2 不存在,那么会返回 nil 值,并且不会执行任何操作。 如果 list1 和 list2 是同样的,那么这个操作等同于移除列表最后一个元素并且把该元素放在列表头部, 所以这个命令也可以当作是一个旋转列表的命令

⑦从列表中删除指定个数的重复元素

lrem key count value
# 从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:
#   count > 0: 从头往尾移除值为 value 的元素。
#   count < 0: 从尾往头移除值为 value 的元素。
#   count = 0: 移除所有值为 value 的元素。

⑧设置指定索引位置元素的值

 lset key index value
# 当index超出范围时会返回一个error。

2、DQL

①根据索引获取一个元素

lindex key 0
# 0 是表示第一个元素, 1 表示第二个元素,并以此类推。 负数索引用于指定从列表尾部开始索引的元素。在这种方法下,-1 表示最后一个元素,-2 表示倒数第二个元素,并以此往前推。

②查询指定范围内的元素

lrange key start end
#  start 和 end 偏移量都是基于0的下标
# 当下标超过list范围的时候不会产生error。 如果start比list的尾部下标大的时候,会返回一个空列表。 如果stop比list的实际尾部大的时候,Redis会当它是最后一个元素的下标。

③获取队列的长度

llen key
# 如果 key 不存在,那么就被看作是空list,并且返回长度为 0。 当存储在 key 里的值不是一个list的话,会返回error。
Copyright Curiouser all right reserved,powered by Gitbook该文件最后修改时间: 2022-10-18 11:49:41

results matching ""

    No results matching ""