redis运维常用命令
mhr18 2024-12-01 09:15 21 浏览 0 评论
一、INFO 命令详解
info主要有一下几项,因版本不同可能略有差别
- server
- clients
- memory
- persistence
- stats
- replication
- cpu
- keyspace
server段一般是配置以及系统项不用特别的关注。
1.1、client段:
# Clients
connected_clients:2053 #当前客户端连接数
client_longest_output_list:0 #当前连接的客户端当中,最长的输出列表
client_biggest_input_buf:0 # 当前连接的客户端当中,最大输入缓存
blocked_clients:0 #被阻塞的客户端数
因为Redis是单线程模型(只能使用单核),来处理所有客户端的请求, 但由于客户端连接数的增长,处理请求的线程资源开始降低分配给单个客户端连接的处理时间,这时每个客户端需要花费更多的时间去等待Redis共享服务的响应。
因为Redis是单线程模型(只能使用单核),来处理所有客户端的请求,且Redis默认允许客户端连接的最大数量是10000。若是看到连接数超过5000以上,那可能会影响Redis的性能。因此监控客户端连接数是非常重要的,因为客户端创建连接数的数量可能超出预期的数量,也可能是客户端端没有有效地释放连接。
相关配置项:
maxclients 10000
tcp-backlog 10240 #TCP 监听的最大容纳数量 默认511
1.2、memory段:
# Memory
used_memory:65256464 #使用内存,以字节(byte)为单位
used_memory_human:62.23M #以人类可读的格式返回 Redis 分配的内存总量
used_memory_rss:54554624 #系统给redis分配的内存即常驻内存,和top 、 ps 等命令的输出一致。
used_memory_peak:2857386920 #内存使用的峰值大小
used_memory_peak_human:2.66G #以人类可读的格式返回 Redis 的内存峰值
used_memory_lua:33792 #lua引擎使用的内存
mem_fragmentation_ratio:0.84 #redis 内存碎片率
mem_allocator:jemalloc-3.6.0 #内存分配器
在使用redis经常会因为memory引发一些列的问题。像因为内存交换产生的性能问题以及延迟问题等。
我们可以通过一下几种方式来减少redis内存交换的发生
- 使用Hash Redis在储存小于100个字段的Hash结构上,其存储效率是非常高的。官方也建议我们尽可能多地使用Hash存储。Hash的操作命令是HSET(key, fields, value)和HGET。
- 设置key的过期时间
- 回收key 设置要maxmemory,且redis实例启用了rdb功能就需要将maxmemory设置为系统可使用内存的45%,因为快照时需要一倍的内存来复制整个数据集,也就是说如果当前已使用45%,在快照期间会变成95%(45%+45%+5%),其中5%是预留给其他的开销。如果没开启快照功能,maxmemory最高能设置为系统可用内存的95%。 当内存使用达到设置的最大阀值时,需要选择一种key的回收策略,即配置文件中的maxmemory-policy字段设置 若是Redis数据集中的key都设置了过期时间,那么volatile-ttl策略是比较好的选择。但如果key在达到最大内存限制时没能够迅速过期,或者根本没有设置过期时间。那么设置为allkeys-lru值比较合适,它允许Redis从整个数据集中挑选最近最少使用的key进行删除(LRU淘汰算法)。
Redis还提供了一些其他淘汰策略,如下:
- volatile-lru:使用LRU算法从已设置过期时间的数据集合中淘汰数据。
- volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰。
- volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰。
- allkeys-lru:使用LRU算法从所有数据集合中淘汰数据。
- allkeys-random:从数据集合中任意选择数据淘汰。
- no-enviction:禁止淘汰数据。
通过设置maxmemory为系统可用内存的45%或95%(取决于持久化策略)和设置maxmemory-policy为volatile-ttl或allkeys-lru(取决于过期设置),可以比较准确的限制Redis最大内存使用率,在绝大多数场景下使用这2种方式可确保Redis不会进行内存交换。倘若你担心由于限制了内存使用率导致丢失数据的话,可以设置noneviction值禁止淘汰数据。
另外一定要配置/proc/sys/vm/min_free_kbytes 让系统及时回收内存 echo 102400 > /proc/sys/vm/min_free_kbytes 设置100m开始回收内存
1.3、persistence 段
# Persistence
loading:0
rdb_changes_since_last_save:1866 #自上次dump后rdb的改动
rdb_bgsave_in_progress:0 #标识rdb save是否进行中
rdb_last_save_time:1452048771 #上次save的时间戳
rdb_last_bgsave_status:ok #上次的save操作状态
rdb_last_bgsave_time_sec:0 #上次rdb save操作使用的时间(单位s)
rdb_current_bgsave_time_sec:-1 #如果rdb save操作正在进行,则是所使用的时间
aof_enabled:1 #是否开启aof,默认没开启(已开启)
aof_rewrite_in_progress:0 #标识aof的rewrite操作是否在进行中
aof_rewrite_scheduled:0 #标识是否将要在rdb save操作结束后执行
aof_last_rewrite_time_sec:0 #上次rewrite操作使用的时间(单位s)
aof_current_rewrite_time_sec:-1 #如果rewrite操作正在进行,则记录所使用的时间
aof_last_bgrewrite_status:ok #上次rewrite操作的状态
aof_last_write_status:ok #上次write操作的状态
aof_current_size:42820373 #aof当前大小,以字节(byte)为单位
aof_base_size:16223723 #aof上次启动或rewrite的大小
aof_pending_rewrite:0 #同上面的aof_rewrite_scheduled
aof_buffer_length:0 #aof buffer的大小
aof_rewrite_buffer_length:0 #aof rewrite buffer的大小
aof_pending_bio_fsync:0 #后台IO队列中等待fsync任务的个数
aof_delayed_fsync:41394 #延迟的fsync计数器 TODO
1.4、stats段
# Stats
total_connections_received:61264941 #自启动起连接过的总数
total_commands_processed:951647408 #自启动起运行命令的总数
instantaneous_ops_per_sec:13 #每秒执行的命令个数
rejected_connections:0 #因为最大客户端连接书限制,而导致被拒绝连接的个数
sync_full:23
sync_partial_ok:0
sync_partial_err:0
expired_keys:40225836 #自启动起过期的key的总数
evicted_keys:0 #因为内存大小限制,而被驱逐出去的键的个数
keyspace_hits:54841673 #自启动起命中key的个数
keyspace_misses:344507 #自启动起未命中key的个数
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:8775 #上次的fork操作使用的时间(单位ms)
因为Redis是个单线程模型,客户端过来的命令是按照顺序执行的。因此网络问题、慢命令会造成阻塞导致redis性能下降。
如果发生命令阻塞就可以看到每秒命令处理数在明显下降。要分析解决这个性能问题,需要跟踪命令处理数的数量和延迟时间。
降低延迟的几个技巧:
- 使用多参数命令 若是客户端在很短的时间内发送大量的命令过来,会发现响应时间明显变慢,这由于后面命令一直在等待队列中前面大量命令执行完毕。因此我们可以使用单命令多参数的方式,来减少操作。例如mset mget hmset hmget等。
- 管道拼接,降低网络延迟
- 避免操作大集合的慢命令
产看redis延迟时间
[root@mayi ~]# redis-cli -c -h 192.168.10.100 -p 6379 --latency
min: 0, max: 3, avg: 0.16 (9746 samples)
本机的延迟是160μs
查询慢日志:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 slowlog get
1) 1) (integer) 11
2) (integer) 1451987715
3) (integer) 14387
4) 1) "CONFIG"
2) "GET"
3) "*
1)日志的唯一标识符 2)被记录命令的执行时间点,以 UNIX 时间戳格式表示 3)查询执行时间,以微秒为单位。例子中命令使用14毫秒。 4)执行的命令,以数组的形式排列。完整命令是config get *
1.5、replication段
# Replication
role:master #角色(主从)
connected_slaves:1 #从库数量
slave0:ip=10.15.x.x,port=6379,state=online,offset=2230297606,lag=2 #从库信息
master_repl_offset:2230300129
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2229251554
repl_backlog_histlen:1048576
1.6、cpu段
# CPU
used_cpu_sys:23111.87 #cpu在内核态所消耗的cpu的时间
used_cpu_user:17763.81 #cpu在用户态所消耗的cpu的时间
used_cpu_sys_children:7909.22
used_cpu_user_children:62767.11
1.7、key段
# Keyspace
db0:keys=85904,expires=81390,avg_ttl=47463342
二、客户端连接命令
2.1、client list
# 查看当前连接到redis的会话:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 client list
# 该命令会打开一个子进程,使用redis-cli客户端打开一个连接,执行client命令,完成后退出
# id=48 addr=192.168.77.100:43328 fd=7
# name= age=0 idle=0 flags=N
# db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r
# cmd=client
# 第1列为连接id,第2列为连接的来源IP和端口,第4列为该连接的名字,为空
# 第5列为该连接已经存在了多少秒,第8列为该链接使用的数据库,第18列为该连接执行的命令
# 使用awk格式化输出,生成简易报表:
# 报表一:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 client list|sed 's/\r//'|\
awk -F' |:' '{print $1,$2,$5,$6,$9,$19}'|column -t
# 报表二:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 client list|sed 's/\r//'|\
awk -F'=| |:' \
'BEGIN{for(i=0;i<=24;i++){printf("-")}{printf("Client List Info")}
for(i=0;i<=23;i++){printf("-")}{printf("\n")}
print"|--ID--|------ADDR------|---NAME---|----AGE----|-DB-|----CMD----|"}
{printf("|%6s|%16s|%10s|%11s|%4s|%11s|\n",$2,$4,$9,$11,$17,$37)}
END{for(i=0;i<=64;i++){printf("-")}{printf("\n")}}'
2.2、CLIENT SETNAME name 和 CLIENT GETNAME 命令:
设置会话连接的连接名和获取会话连接的连接名
只能设置和查看当前会话
2.3、CLIENT KILL:
杀掉会话,可以根据ID或者是ip:port
# 使用CLIENT LIST命令拼出杀掉会话的命令:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 client list|sed 's/\r//'|\
awk -F'=| ' '{print "CLIENT KILL "$1" "$2}'
# 或:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 client list|sed 's/\r//'|\
awk -F'=| ' '{print "CLIENT KILL "$4}'
# 一般不太可能直接杀掉全部的会话进程,可能需要根据关键字来定位那些需要杀掉:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 client list|sed 's/\r//'|\
grep 'cmd=client'|awk -F'=| ' '{print "CLIENT KILL "$4}'
2.4、CLIENT PAUSE time:
阻塞当前会话连接一定时间,单位是毫秒:
dbsize
CLIENT PAUSE 1
dbsize
相当于:
echo OK;usleep 1000;echo OK
三、参数配置相关:
# 获取所有的参数
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 CONFIG GET "*"
# 获取最大内存参数
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 CONFIG GET maxmemory
# 返回值 6871947673
# 设置参数,当前生效,无需重启
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 CONFIG SET maxmemory 7000000000
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 CONFIG GET maxmemory
# 返回值 7000000000
[root@mayi ~]# cat redis.conf |grep ^maxmemory
# maxmemory 6871947673
# 配置文件并没有被修改,redis重启参数设置回滚
# 将当前参数刷入配置文件
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 CONFIG REWRITE
[root@mayi ~]# cat redis.conf |grep ^maxmemory
# maxmemory 7000000000
# 配置文件更新,参数永久设置
# 重置 INFO 命令中的某些统计数据
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 CONFIG RESETSTAT
# 被重置的数据包括:
# Keyspace hits (键空间命中次数)
# Keyspace misses (键空间不命中次数)
# Number of commands processed (执行命令的次数)
# Number of connections received (连接服务器的次数)
# Number of expired keys (过期key的数量)
# Number of rejected connections (被拒绝的连接数量)
# Latest fork(2) time(最后执行 fork(2) 的时间)
# The aof_delayed_fsync counter(aof_delayed_fsync 计数器的值)
# 摘录自 http://redisdoc.com/server/config_resetstat.html
四、底层命令相关:
# 获取全部的命令列表
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 COMMAND
# 获取这些命令的总数
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 COMMAND COUNT
# 获取给定命令的所有键
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 COMMAND GETKEYS SET key value
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 COMMAND GETKEYS MSET k1 v1 k2 v2 k3 v3
# 获取Redis相应命令描述的数组
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 COMMAND INFO del set
# 不负责任的猜测:
# 是命令实现的简单描述
# 如set需要先调用write写
# 然后调用denyoom拒绝被oom
五、危险操作:
删除当前数据库的所有key,只能删除当前库的key:
[root@mayi ~]# echo -e "select 2\nflushdb"|sed 's/$/\r/'|redis-cli -h 192.168.10.100 -p 6379 --pipe
# 需要将命令流转化成dos格式,然后使用--pipe参数装入到redis实例
删除所有数据库的所有key,全部库的key都会被清空:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 FLUSHALL
关闭redis服务:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 SHUTDOWN
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 SHUTDOWN SAVE
# 默认使用SAVE命令,阻塞服务请求,生成新的RDB,然后关闭redis服务
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 SHUTDOWN NOSAVE
# 直接关闭redis服务
服务崩溃命令:
[root@mayi ~]# redis-cli -h 192.168.10.100 -p 6379 DEBUG SEGFAULT
# shutdown abort
六、集群相关:
6.1、集群信息:
ROLE 返回当前实例在集群中的角色状态
CLUSTER INFO 获取集群的信息
CLUSTER NODES 列出集群当前所有节点的状态,包括ID、IP:PORT、角色、数据槽信息
6.2、节点操纵:
CLUSTER MEET <ip> <port> 将ip和port所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除node_id指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为node_id指定的节点的从节点。
SLAVEOF host port 将当前服务器转变为指定服务器的从属服务器(slave server)
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
6.3、数据槽操纵:
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽slot指派给node_id指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
6.4、数据槽查询:
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。
七、服务状态相关:
TIME
# 返回当前服务器时间UNIX时间戳,到'1970-01-01 00:00:00'+时区 的间隔秒和微秒
DBSIZE
# 返回当前数据库的 key 的数量
LASTSAVE
# 返回上一次成功保存RDB的时间戳,UNIX时间戳,到'1970-01-01 00:00:00'+时区的间隔秒
DEBUG OBJECT key
# 获取 key 的调试信息
# Value at:0x7f2167c72528 refcount:1
# encoding:embstr serializedlength:17 lru:13993658 lru_seconds_idle:1424
# 返回的信息包括value内存地址、编码方式、序列化长度、lru空闲秒数 等
# 慢日志相关
[root@mayi ~]# redis-cli -c -h 192.168.10.100 -p 6379 SLOWLOG LEN
# 查看当前有多少条慢日志
[root@mayi ~]# redis-cli -c -h 192.168.10.100 -p 6379 SLOWLOG GET 1
# 获取最后一条慢日志
# 1) 1) (integer) 95 慢日志的ID
# 2) (integer) 1523857790 慢日志UNIX时间戳
# 3) (integer) 13730 慢日志的耗时/微秒
# 4) 1) "ZADD" 慢日志具体操作内容
# 2) "{OPREATE_RECORD...
# 3) "5.6704707E7"
# 4) "{\"aaCreateTime...
# 5) "192.168.10.117:55165" 会话来源
[root@mayi ~]# redis-cli -c -h 192.168.10.100 -p 6379 SLOWLOG GET
# 获取全部慢日志
[root@mayi ~]# redis-cli -c -h 192.168.10.100 -p 6379 SLOWLOG RESET
# 清空慢日志
# 监控 MONITOR
[root@mayi ~]# redis-cli -c -h 192.168.10.100 -p 6379 MONITOR
# 相当于tailf log,将所有到该redis服务器的会话连接全部监控起来
# 1523933983.091873 [0 192.168.77.100:43468] "dbsize"
# 时间戳 [数据库 IP:PORT] "命令"
date -d@1523933983.091873 +%F_%T_%N
# 2018-04-17_10:59:43_091873000
文章部分内容通过网络收集整理,如有侵权或技术交流请联系作者!
#Author : mayi
#wchat : a403182580
相关推荐
- Dubai's AI Boom Lures Global Tech as Emirate Reinvents Itself as Middle East's Silicon Gateway
-
AI-generatedimageAsianFin--Dubaiisrapidlytransformingitselffromadesertoilhubintoaglob...
- OpenAI Releases o3-pro, Cuts o3 Prices by 80% as Deal with Google Cloud Reported to Make for Compute Needs
-
TMTPOST--OpenAIisescalatingthepricewarinlargelanguagemodel(LLM)whileseekingpartnershi...
- 黄仁勋说AI Agent才是未来!但究竟有些啥影响?
-
,抓住风口(iOS用户请用电脑端打开小程序)本期要点:详解2025年大热点你好,我是王煜全,这里是王煜全要闻评论。最近,有个词被各个科技大佬反复提及——AIAgent,智能体。黄仁勋在CES展的发布...
- 商城微服务项目组件搭建(五)——Kafka、Tomcat等安装部署
-
1、本文属于mini商城系列文档的第0章,由于篇幅原因,这篇文章拆成了6部分,本文属于第5部分2、mini商城项目详细文档及代码见CSDN:https://blog.csdn.net/Eclipse_...
- Python+Appium环境搭建与自动化教程
-
以下是保姆级教程,手把手教你搭建Python+Appium环境并实现简单的APP自动化测试:一、环境搭建(Windows系统)1.安装Python访问Python官网下载最新版(建议...
- 零配置入门:用VSCode写Java代码的正确姿
-
一、环境准备:安装JDK,让电脑“听懂”Java目标:安装Java开发工具包(JDK),配置环境变量下载JDKJava程序需要JDK(JavaDevelopmentKit)才能运行和编译。以下是两...
- Mycat的搭建以及配置与启动(mycat2)
-
1、首先开启服务器相关端口firewall-cmd--permanent--add-port=9066/tcpfirewall-cmd--permanent--add-port=80...
- kubernetes 部署mysql应用(k8s mysql部署)
-
这边仅用于测试环境,一般生产环境mysql不建议使用容器部署。这里假设安装mysql版本为mysql8.0.33一、创建MySQL配置(ConfigMap)#mysql-config.yaml...
- Spring Data Jpa 介绍和详细入门案例搭建
-
1.SpringDataJPA的概念在介绍SpringDataJPA的时候,我们首先认识下Hibernate。Hibernate是数据访问解决技术的绝对霸主,使用O/R映射(Object-Re...
- 量子点格棋上线!“天衍”邀您执子入局
-
你是否能在策略上战胜量子智能?这不仅是一场博弈更是一次量子智力的较量——量子点格棋正式上线!试试你能否赢下这场量子智局!游戏玩法详解一笔一画间的策略博弈游戏目标:封闭格子、争夺领地点格棋的基本目标是利...
- 美国将与阿联酋合作建立海外最大的人工智能数据中心
-
当地时间5月15日,美国白宫宣布与阿联酋合作建立人工智能数据中心园区,据称这是美国以外最大的人工智能园区。阿布扎比政府支持的阿联酋公司G42及多家美国公司将在阿布扎比合作建造容量为5GW的数据中心,占...
- 盘后股价大涨近8%!甲骨文的业绩及指引超预期?
-
近期,美股的AI概念股迎来了一波上升行情,微软(MSFT.US)频创新高,英伟达(NVDA.US)、台积电(TSM.US)、博通(AVGO.US)、甲骨文(ORCL.US)等多股亦出现显著上涨。而从基...
- 甲骨文预计新财年云基础设施营收将涨超70%,盘后一度涨8% | 财报见闻
-
甲骨文(Oracle)周三盘后公布财报显示,该公司第四财季业绩超预期,虽然云基建略微逊于预期,但管理层预计2026财年云基础设施营收预计将增长超过70%,同时资本支出继上年猛增三倍后,新财年将继续增至...
- Springboot数据访问(整合MongoDB)
-
SpringBoot整合MongoDB基本概念MongoDB与我们之前熟知的关系型数据库(MySQL、Oracle)不同,MongoDB是一个文档数据库,它具有所需的可伸缩性和灵活性,以及所需的查询和...
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
-
概述 Jmeter最早是为了测试Tomcat的前身JServ的执行效率而诞生的。到目前为止,它的最新版本是5.3,其测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据库、JM...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Dubai's AI Boom Lures Global Tech as Emirate Reinvents Itself as Middle East's Silicon Gateway
- OpenAI Releases o3-pro, Cuts o3 Prices by 80% as Deal with Google Cloud Reported to Make for Compute Needs
- 黄仁勋说AI Agent才是未来!但究竟有些啥影响?
- 商城微服务项目组件搭建(五)——Kafka、Tomcat等安装部署
- Python+Appium环境搭建与自动化教程
- 零配置入门:用VSCode写Java代码的正确姿
- Mycat的搭建以及配置与启动(mycat2)
- kubernetes 部署mysql应用(k8s mysql部署)
- Spring Data Jpa 介绍和详细入门案例搭建
- 量子点格棋上线!“天衍”邀您执子入局
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)