我有一个环境变量MY_HOME
,它有一个目录/home/abc
现在,我有一个redis.conf
文件,我需要像这样设置这个路径
**redis.conf**
pidfile $MY_HOME/local/var/pids/redis.pid
logfile $MY_HOME/local/var/log/redis.log
dir $MY_HOME/local/var/lib/redis/
就像我们在命令行中一样,以便我的配置文件根据Environment变量选择路径。
答案 0 :(得分:2)
因为Redis可以从stdin
读取其配置,所以我做的事与@jolestar建议的非常类似。我将占位符变量放在redis.conf
中,然后在我的Redis启动器中使用sed
替换它们。例如:
==========
$MY_HOME/redis/redis.conf
==========
...
pidfile {DIR}/pids/server{n}.pid
port 123{n}
...
然后我有一个启动Redis的脚本:
==========
runredis.sh
==========
DIR=$MY_HOME/redis
for n in {1..4}; do
echo "starting redis-server #$n ..."
sed -e "s/{n}/$n/g" -e "s/{DIR}/$DIR/g" < $DIR/redis.conf | redis-server -
done
我一直在使用这种方法,效果很好。
答案 1 :(得分:0)
Redis不支持此功能,但是可以使用envsubst
(几乎在所有现代发行版中默认安装)来实现-在运行$featuredmembers = get_field('featured_member');
global $post;
//$featuredmembers has a field named "featured". That's the field I want.
$posts = get_posts([
'post_type' => 'members',
'post_status' => 'publish',
'posts_per_page' => -1,
'order' => 'ASC',
'orderby' => 'title'
]);
foreach ($featuredmembers as $post) {
print_r($post['featured']->ID);
echo get_field('featured');
}
之前替换环境变量的值。
redis-server
答案 2 :(得分:-1)
我也找到了解决方案,但redis config不支持env var。 我认为有2种方法: