我的一个 Python Redis 客户端失败并出现以下异常:
redis.exceptions.ResponseError: MISCONF Redis 配置为保存 RDB 快照,但当前无法保留在磁盘上。可能修改数据集的命令被禁用。请检查 Redis 日志以获取有关错误的详细信息。
我检查了redis机器,好像是内存不足:
free total used free shared buffers cached
Mem: 3952 3656 295 0 1 9
-/+ buffers/cache: 3645 306
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
toptop - 15:35:03 up 14:09, 1 user, load average: 0.06, 0.17, 0.16
Tasks: 114 total, 2 running, 112 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.2 st
KiB Mem: 4046852 total, 3746772 used, 300080 free, 1668 buffers
KiB Swap: 0 total, 0 used, 0 free. 11364 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1102 root 20 0 3678836 3.485g 736 S 1.3 90.3 10:12.53 redis-server
1332 ubuntu 20 0 41196 3096 972 S 0.0 0.1 0:00.12 zsh
676 root 20 0 10216 2292 0 S 0.0 0.1 0:00.03 dhclient
850 syslog 20 0 255836 2288 124 S 0.0 0.1 0:00.39 rsyslogd
Run Code Online (Sandbox Code Playgroud)
我在单个 Redis 实例中使用几十个 Redis 数据库。每个 DB 由 给定的数字 id 表示redis-cli,例如:
$ redis-cli -n 80
127.0.0.1:6379[80]>
Run Code Online (Sandbox Code Playgroud)
我如何知道每个数据库消耗了多少内存,以及每个数据库中最大的键是什么?
我如何知道每个数据库消耗了多少内存,以及每个数据库中最大的键是什么?
您无法获取每个数据库的已用内存。通过INFO命令,您只能获取Redis实例的总使用内存。Redis每次动态分配一些内存时都会记录新分配的内存大小。然而,它不会为每个数据库做这样的记录。此外,它没有任何最大键的记录。
maxmemory通常,您应该使用和配置您的 Redis 实例maxmemory-policy(即达到最大内存时的驱逐策略)。
| 归档时间: |
|
| 查看次数: |
7988 次 |
| 最近记录: |