AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[redis](server)

Martin Hope
Erick Calder
Asked: 2022-11-06 15:57:55 +0800 CST

在集群环境中重新启用命令

  • 6

我们在通过 Helm 安装的 Kubernetes 集群(v1.21.14-gke.3000)中将 Redis 作为容器运行。Helm 使用 Bitnami 映像,该映像禁用 FLUSHALL 命令。与本文一样,我们想重新启用 Redis 命令,但编辑配置文件是不可行的。有其他选择吗?

下面是我的helmfile.yaml:

repositories:
- name: bitnami
  url: https://charts.bitnami.com/bitnami

environments:
  dev:
    values:
      - existingSecret: 'redis-secret'
      - redisVersion: 17.3.8
  prod:
    values:
      - existingSecret: 'redis-secret'
      - redisVersion: 17.3.8

releases:
- name: redis
  namespace: gitlab-managed-apps
  chart: bitnami/redis
  version: "{{ .Values.redisVersion }}"
  installed: true
  recreatePods: true
  values:
    - values.yaml.gotmpl

和相应的values.yaml.gotmpl:

auth:
  enabled: true
  existingSecret: {{ .Values.existingSecret }}

global:
  storageClass: 'premium-rwo'
  redis:
    password: "***"
replica:
  replicaCount: 1
master:
kubernetes redis
  • 1 个回答
  • 33 Views
Martin Hope
Mudassar Hashmi
Asked: 2022-03-30 12:40:34 +0800 CST

Docker Compose 中的 Redis 拒绝 RDB 文件 Crontab 的权限

  • 0

嗨,我有以下 docker-compose.yaml 文件。

version: "3.9"

volumes:
  local_postgres_data2: {}
  local_postgres_data_backups2: {}

services:
  postgres:
    image: postgres
    container_name: angel-postgres
    restart: always
    volumes:
      - local_postgres_data2:/var/lib/postgresql/data:Z
      - local_postgres_data_backups2:/backups:z
    environment:
      POSTGRES_DB: angel-agility
      POSTGRES_HOST: localhost
      POSTGRES_USER: angel-user
      POSTGRES_PASSWORD: angel123
    ports:
      - "5432:5432"

  redis:
    container_name: angel-redis
    image: redis:latest
    ports:
      - '6379:6379'
    restart: unless-stopped

当我运行 docker-compose up 时,Redis 的日志中出现错误:

2276:C 29 Mar 2022 20:32:52.005 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Permission denied
1:M 29 Mar 2022 20:32:52.105 # Background saving error

我在不同平台上尝试了所有解决方案,但无法使 Redis 工作。一个线索或方向使它工作将受到高度赞赏。

还简要介绍了这个问题,为什么它的发生也会对读者和我有很大的帮助。期待。

docker-compose redis aws-ec2
  • 1 个回答
  • 501 Views
Martin Hope
Jamesthe1
Asked: 2021-08-07 07:56:07 +0800 CST

为什么 IIS PHP 在存在并正确添加时无法识别 PhpRedis?

  • 0

在你读之前:

  • PHP 不加载扩展并不能回答我的问题,因为我没有 Apache。我有 IIS。
  • PHP 的 MySQL 扩展不起作用并不能回答我的问题,因为这些文件与所有其他 DLL 文件具有相同的权限并且没有破坏继承。
  • IIS 上的 PHP 不加载 sqlsrv 扩展无法回答我的问题,因为该项目适用于最新版本。

我目前有一个 PHP 脚本,它只是添加了 Redis(使用 PhpRedis)。

<?php
    $redis = new Redis ();
?>

这将创建“500 内部服务器错误”消息。在检查 PHP 7.4 x64 的日志时,尽管位于此处,但加载页面会触发错误:

[06-Aug-2021 15:54:13 UTC] PHP Warning:  PHP Startup: Unable to load dynamic library 'php_redis.dll' (tried: C:\Program Files\PHP\v7.4\ext\php_redis.dll (The specified module could not be found.), C:\Program Files\PHP\v7.4\ext\php_php_redis.dll.dll (The specified module could not be found.)) in Unknown on line 0

由于以下条目,它没有在错误的地方搜索或没有添加php.ini:

[WebPIChanges]
extension_dir="C:\Program Files\PHP\v7.4\ext\"
...
[ExtensionList]
extension=php_redis.dll
...

IIS可以在扩展管理器中检测到 redis 插件并声明它已启用。

此问题出现在 v7.4 中。我已经在 v8.0 中尝试过,但我仍然面临同样的问题。PhpRedis 5.3.4 提供了一个 v7.4 DLL,仍然是同样的问题,没有意识到依赖关系。

windows php iis redis
  • 1 个回答
  • 212 Views
Martin Hope
Paulo Coghi
Asked: 2021-02-04 07:39:33 +0800 CST

无法在 Ubuntu Server 20.04.2 上将 Redis 初始化为 systemd 服务(受监督的 systemd)

  • 0

supervised systemd在 Ubuntu Server 20.04 上,Redis (5.0.7) 设置为 on后不会启动/etc/redis/redis.conf,但使用 . 手动运行时不会打印错误/usr/bin/redis-server /etc/redis/redis.conf。

此外,当手动运行时,可能会发现它正在侦听 6379 端口netstat -tulpn。

重现

作为根:

  • 更新软件包并安装 Redisapt update && apt install redis-server
  • 上/etc/redis/redis.conf,将行更改supervised no为supervised systemd
  • 尝试使用service redis-server restartor重启 Redissystemctl restart redis

上述命令的输出是:

Job for redis-server.service failed because the control process exited with error code.
See "systemctl status redis-server.service" and "journalctl -xe" for details.

的输出systemctl status redis-server.service是:

● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2021-02-03 12:15:56 -03; 28s ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
    Process: 3851 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=1/FAILURE)

Feb 03 12:15:56 mywebsite.com systemd[1]: redis-server.service: Scheduled restart job, restart counter is at 5.
Feb 03 12:15:56 mywebsite.com systemd[1]: Stopped Advanced key-value store.
Feb 03 12:15:56 mywebsite.com systemd[1]: redis-server.service: Start request repeated too quickly.
Feb 03 12:15:56 mywebsite.com systemd[1]: redis-server.service: Failed with result 'exit-code'.
Feb 03 12:15:56 mywebsite.com systemd[1]: Failed to start Advanced key-value store.

尝试重新启动 Redis 服务时不会打印任何日志/var/log/redis/redis-server.log,但手动运行时会打印以下文本:

4231:C 03 Feb 2021 12:27:52.053 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4231:C 03 Feb 2021 12:27:52.053 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=4231, just started
4231:C 03 Feb 2021 12:27:52.053 # Configuration loaded
4232:M 03 Feb 2021 12:27:52.063 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 4232
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

4232:M 03 Feb 2021 12:27:52.065 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
4232:M 03 Feb 2021 12:27:52.065 # Server initialized
4232:M 03 Feb 2021 12:27:52.066 * Ready to accept connections

软件版本:

Redis 服务器 v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923

Ubuntu 20.04.2 LTS - 64 位

系统 245 (245.4-4ubuntu3.4)

systemd ubuntu-20.04 redis systemd-service
  • 2 个回答
  • 6179 Views
Martin Hope
JayK23
Asked: 2020-11-29 04:14:02 +0800 CST

改善 Redis 集群上的内存碎片

  • 1

我最近在 Digital Ocean 上购买了一个托管 Redis 集群,规格如下: 1 GB RAM / 1vCPU / 10 GB Disk / Primary only.

我只将此集群用于 PUB-SUB 系统,其中外部应用程序向 Redis 发送大约 400 条非常小的 json 消息,并且客户端正在侦听这些消息。我认为集群的负载过多,但磁盘和内存使用率仍然相当低。

唯一让我担心的是碎片率,平均为 3.8,但有时会下降到 1。现在我应该担心多少?我读到内存碎片说明了内存分配的效率,所以我对此有点担心。我很确定这取决于我发送给 Redis 的消息量。有什么办法可以改善这一点,或者我只能扩大我的集群吗?任何形式的建议表示赞赏!

redis
  • 1 个回答
  • 186 Views
Martin Hope
Barry Chapman
Asked: 2020-10-11 20:35:59 +0800 CST

有一个集中的 [redis] 缓存实例还是每个实例更好?

  • 0

我在 AWS 中有一个包含公共子网和私有子网的 VPC。在私有子网中,我有两个负载平衡的 EC2 应用程序服务器和一个 EC2 数据库/缓存服务器。

两个应用服务器连接到数据库/缓存服务器以进行数据库查询,但也有一个 Redis 实例运行在数据库服务器上。两个应用服务器都配置为连接到这个 redis 实例。

我的问题是 - 这是高性能的吗?在每个 App 服务器节点上安装一个 Redis 实例会更好吗?

还是我们最好将 redis 留在数据库/缓存服务器上?

cache load-balancing amazon-ec2 redis amazon-vpc
  • 2 个回答
  • 357 Views
Martin Hope
moses
Asked: 2020-07-11 11:15:13 +0800 CST

使用 --rdb 运行 redis-cli 会阻止 redis 实例吗?

  • 0

我有几个运行 RDB 模式的 redis 实例。
目前,如果我想备份我的实例,我会运行 BGSAVE 命令并复制 rdb 文件。
我想在远程机器上获取 rdb 文件,所以我搜索了一个解决方案,发现 redis-cli 可以使用 --rdb 选项来传输 rdb 文件。我不清楚几件事
1:该redis-cli --rdb HOST > temp.rdb命令会创建一个新的 RDB 还是仅传输 BGSAVE 创建的最后一个 RDB 文件?
2:会不会类似SAVE命令那样阻塞redis实例?

redis
  • 1 个回答
  • 329 Views
Martin Hope
nix
Asked: 2020-07-05 10:16:34 +0800 CST

Docker 使 Redis 的外部连接失败

  • 0

我已经尝试了 StackOverflow 或其他论坛上所有可能的解决方案,我可以找到。我开始按照 Hub Docker 上提供的实际说明使用 docker 安装 redis。但我无法连接到容器外的 Redis。

我的初始命令:

docker run --name c-redis -d redis

经过进一步搜索,我发现我需要将其执行为:

docker run --name mag-redis -d redis -p 6379:6379 

但这也失败了,因为我收到了以下错误。

$ docker run --name c-redis -d redis -p 6379:6379 
c2dbf68f52b46e90671a7efaafbe46898368bb"
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
8559a31e96f4: Already exists
85a6a5c53ff0: Already exists
b69876b7abed: Already exists
a72d84b9df6a: Already exists
5ce7b314b19c: Already exists
04c4bfb0b023: Already exists
Digest: sha256:800f2587bf3376cb01e6307afe599ddce9439deafbd4fb8562829da96085c9c5
Status: Downloaded newer image for redis:latest
075d68ec71abf3752050c947e44a4b1c52305fb6153febe815e31659284612cf
docker: Error response from daemon: driver failed programming external connectivity on endpoint c-redis (f251e744aeacbd1a084f11b0e01731b1e1a36454ca8ad634889dd38dae66314d):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.17.0.3:6379 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).

然后我重新启动iptables,因为在线可用的解决方案之一就是这个。但这并没有帮助,并且再次出现同样的错误。然后我在 Stackoverflow 上找到了另一个查询,即

docker run --name c-redis -p 6379:6379 -d redis --restart unless-stopped -v /etc/redis/:/data --appendonly yes --requirepass "password"

但是,iptables 的相同错误......然后我删除了图像/容器,并使用第一个命令执行(docker run --name c-redis -d redis),它安装了 redis,但我再次无法从外部访问(通过同一主机,外部容器)。

我再次删除了容器/映像,并尝试了其他 2 个命令,但每次我遇到相同的 iptables 错误时,我什至尝试重新启动 docker。还是没用。

我正在使用 Centos 7。如果其他人遇到此类问题,请告诉我。在过去的几个小时里,我完全被困在这里。

docker:来自守护进程的错误响应:驱动程序在端点 c-redis 上编程外部连接失败(f251e744aeacbd1a084f11b0e01731b1e1a36454ca8ad634889dd38dae66314d):(iptables 失败:iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.17.0.3:6379 !-i docker0: iptables: 没有该名称的链/目标/匹配。(退出状态 1))。

编辑:

码头工人版本:

Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:46:54 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:45:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

更新:(iptables -S;iptables -t nat -S)

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-N f2b-postfix
-N f2b-postfix-sasl
-A INPUT -p tcp -m multiport --dports 25,587 -j f2b-postfix
-A INPUT -p tcp -m multiport --dports 25,587,953 -j f2b-postfix-sasl
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 31337 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443,587,25,53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
-A f2b-postfix -s 212.70.149.18/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix -j RETURN
-A f2b-postfix-sasl -s 212.70.149.18/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-postfix-sasl -j RETURN
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT

谢谢!

linux centos7 redis
  • 1 个回答
  • 567 Views
Martin Hope
Jonathan van de Groep
Asked: 2020-06-11 00:55:47 +0800 CST

有一个工作队列有什么好处?

  • 0

我目前正在构建一个向用户发送交易电子邮件的 API。我用工作队列来做这件事,尤其是公牛。在开发过程中,我想到了一些事情;这些工作实际在哪里执行?目前,我通过公牛将这些作业发送到在我计算机上的 docker 容器中运行的 redis 数据库。我的第一个想法是这些作业在 redis 容器中运行,但我认为这不是真的,因为那个 redis 容器没有运行 NodeJS,而 NodeJS 正是我用于 API 的。

我想这些作业实际上是在创建它们的同一台机器上执行的。但是,如果是这样的话,那么拥有一个工作队列有什么好处呢?我认为拥有一个作业队列的目的是将任务委托给其他东西,这样 API 就不会因发送所有这些电子邮件而减慢。据我了解,现在发生的一切只是通过向redis发送和接收作业来延迟任务。

我对工作队列很陌生。我希望我已经足够清楚地描述了我的情况。

谢谢你。

docker redis node.js job-scheduler queue
  • 1 个回答
  • 267 Views
Martin Hope
Anthony Kong
Asked: 2020-04-16 06:05:50 +0800 CST

在应用 terraform 计划期间,如何在网络问题后清除 terraform 资源?

  • 1

我已经应用了一个 terraform 来创建一个 redis 集群。

进行到一半时,应用程序进程失败并显示以下错误消息:

Error: Error waiting for elasticache replication group (my-project) to be created: SerializationError: failed decoding Query response
    status code: 200, request id: 3d5a5394-20f0-4834-9e2a-9aff20cceecf
caused by: read tcp 192.168.86.116:53912->54.222.5.156:443: read: connection reset by peer

我知道我已经成功创建了集群,因为我可以使用redis-cli.

但是,如果我再做terraform apply一次,terraform 会说

module.my_project.aws_elasticache_replication_group.main[0] is tainted, so must be replaced

它试图破坏和重新创建资源,而不是no action像我预期的那样。

我已尝试将资源导入状态文件以纠正问题。但是 terraform 会引发错误:

错误:资源已由 Terraform 管理

如果操作一开始就成功,我将看不到tainted错误消息。

有什么办法可以从这个问题中恢复过来?我想避免删除然后重新创建资源。

理想情况下,我希望我可以清除状态文件中的资源,这样 terraform 就不会尝试破坏新创建的集群。

terraform redis
  • 2 个回答
  • 3731 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve