什么时候该用这个 redis-server@.service?
用来恢复缺失的默认文件、确认发行版本带了什么,或拿你的 Redis config 做 diff。
# Templated service file for redis-server(1)
#
# Each instance of redis-server requires its own configuration file:
#
# $ cp /etc/redis/redis.conf /etc/redis/redis-myname.conf
# $ chown redis:redis /etc/redis/redis-myname.conf
#
# Ensure each instance is using their own database:
#
# $ sed -i -e 's@^dbfilename .*@dbfilename dump-myname.rdb@' /etc/redis/redis-myname.conf
#
# We then listen exlusively on UNIX sockets to avoid TCP port collisions:
#
# $ sed -i -e 's@^port .*@port 0@' /etc/redis/redis-myname.conf
# $ sed -i -e 's@^\(# \)\{0,1\}unixsocket .*@unixsocket /var/run/redis-myname/redis-server.sock@' /etc/redis/redis-myname.conf
#
# ... and ensure we are logging, etc. in a unique location:
#
# $ sed -i -e 's@^logfile .*@logfile /var/log/redis/redis-server-myname.log@' /etc/redis/redis-myname.conf
# $ sed -i -e 's@^pidfile .*@pidfile /run/redis-myname/redis-server.pid@' /etc/redis/redis-myname.conf
#
# We can then start the service as follows, validating we are using our own
# configuration:
#
# $ systemctl start redis-server@myname.service
# $ redis-cli -s /var/run/redis-myname/redis-server.sock info | grep config_file
#
# -- Chris Lamb <lamby@debian.org> Mon, 09 Oct 2017 22:17:24 +0100
[Unit]
Description=Advanced key-value store (%I)
After=network.target
Documentation=http://redis.io/documentation, man:redis-server(1)
[Service]
Type=notify
ExecStart=/usr/bin/redis-server /etc/redis/redis-%i.conf --supervised systemd --daemonize no
PIDFile=/run/redis-%i/redis-server.pid
TimeoutStopSec=0
Restart=always
User=redis
Group=redis
RuntimeDirectory=redis-%i
RuntimeDirectoryMode=2755
UMask=007
PrivateTmp=yes
LimitNOFILE=65535
PrivateDevices=yes
ProtectHome=yes
ReadOnlyDirectories=/
ReadWritePaths=-/var/lib/redis
ReadWritePaths=-/var/log/redis
ReadWritePaths=-/var/run/redis-%i
NoNewPrivileges=true
CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCE
MemoryDenyWriteExecute=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictNamespaces=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
# redis-server can write to its own config file when in cluster mode so we
# permit writing there by default. If you are not using this feature, it is
# recommended that you replace the following lines with "ProtectSystem=full".
ProtectSystem=true
ReadWriteDirectories=-/etc/redis
[Install]
WantedBy=multi-user.target
curl https://exampleconfig.com/api/v1/config/original/217b0c4648bb4e56ca1ea01b6299d610?hint=redis-server@.service
wget -O redis-server@.service https://exampleconfig.com/api/v1/config/original/217b0c4648bb4e56ca1ea01b6299d610?hint=redis-server@.service
<prompt><role>DevOps agent</role><source url='https://exampleconfig.com/api/v1/config/original/217b0c4648bb4e56ca1ea01b6299d610?hint=redis-server@.service' /><config><app>Redis</app><os>Ubuntu 22.04 LTS (Jammy Jellyfish)</os><location>/etc/systemd/redis-server@.service</location><lines>72</lines><md5>217b0c4648bb4e56ca1ea01b6299d610</md5><sha256>e3ee43560cca0bdf0ab0bedb942148a32cf4b2c9ae6cbda767f2f298fa48279d</sha256></config></prompt>
粘贴到 Claude、ChatGPT 或任何 AI 助手里。
sudo apk add redis
sudo apt update && sudo apt install redis-server
sudo apt update && sudo apt install redis-server
什么时候该用这个 redis-server@.service?
用来恢复缺失的默认文件、确认发行版本带了什么,或拿你的 Redis config 做 diff。
怎么恢复 Redis 的默认配置?
下载文件,把 /etc/systemd/redis-server@.service 里的当前配置备份好,替换掉,然后 reload 或 restart Redis。
redis-server@.service 适合直接上生产吗?
这是 Ubuntu 22.04 LTS (Jammy Jellyfish) 的厂商默认配置,只能当基线。上生产前请检查安全和性能设置。
和其他 OS 版本有什么不同?
默认值会随发行版和版本变化,这份对应 Ubuntu 22.04 LTS (Jammy Jellyfish)。
我可以用它来排查 Redis 吗?
可以。和你的配置做 diff 找出漂移,然后只恢复需要的段落。