redis安装与错误解决办法
redis 安装与安装中遇到的错误
redis 安装
wget dis.io/releases/redis-4.0.
tar xzf redis-4.0.
cd redis-4.0.11
make
启动服务端
src/redis-server
客户端连接与测试
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
redis常⽤命令
redis-cli
-h 指定远程登陆ip
-p 指定远程redis访问端⼝
-n 指定库b编号
-a 指定密码
⽰例
.
/redis-cli -h 127.0.0.1 -p 6379 -n 3 -a djx
远程执⾏命令
清空所有的数据
./redis-cli -h 127.0.0.1 -p 6379 -n 3 -a djx flushall
redis 常⽤配置
redis设置密码
编译器错误临时⽣效
在命令⾏⽤ config set requirepass password 来进⾏设置。重启redis后即失效。
[root@djx2 src]# ./redis-cli
127.0.0.1:6379> config set requirepass djx
OK
127.0.0.1:6379> config get requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth djx
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "djx"
永久⽣效
通过在redis的配置⽂件f 进⾏配置,在配置⽂件中有个参数: requirepass 这个就是配置redis访问密码的参数;requirepass password
然后我们启动的时候需要指定我们的配置⽂件进⾏启动。
redis-server /f
redis 指定端⼝
默认是6379,我们可以更改成公司内部统⼀的端⼝。
port 6379
redis 指定监听
redis 默认绑定的是 127.0.0.1 ,也就是只能本地访问了,如果我们需要让外⽹也可以进⾏访问,那么我们需要更改默认的绑定。bind 0.0.0.0
这样我们就可以让应⽤访问了。
redis 指定⽇志⽂件存放位置
默认⽇志⽂件的存放位置是为空的,也就是直接在控制台输出了。
我们可以在logfile中配置⽇志⽂件路径。
logfile "/var/log/redis.log"
redis 指定数据存放位置(要指定)
在f 的
# The filename where to dump the DB
dbfilename dump.rdb #指定数据存放的⽂件名称
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir ./ #指定数据存放的位置。
创建⽬录
mkdir /opt/redis/data/
在配置⽂件中指定⽬录
dir /opt/redis/data/
redis 开启rdbchecksum
该参数,在3.2版本和4.0版本是默认开启的,但是在2.4版本中是没有开启的,该参数我们进⾏使⽤dump.rdb⽂件时是有作⽤的,因为在使⽤dump.rdb 的时候有该值是会效验该⽂件的完整性。rdbchecksum设置为no的话就不会效验该⽂件的完整性。
redis 后台运⾏
我们可以使⽤nohup和& 让redis在后台正常运⾏,并写⼊⽇志到/var/log/redis.log
nohup ./src/redis-server ./f >>/var/log/redis.log 2>&1 &
安全配置
如果只是内⽹使⽤的话,我们可以只监听本地,也就是 bind 127.0.0.1.
设置访问密码,密码设置复杂点,requirepass
使⽤专门的⽤户来运⾏ Redis,不要使⽤ root。
useradd -M -s /sbin/nologin [username]
隐藏重要命令
Redis ⽆权限分离,其管理员账号和普通账号⽆明显区分。攻击者登录后可执⾏任意操作,因此需要隐藏以下重要命令:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL,
CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL。
我们可以隐藏,也可以将这些命令设置为复杂的字符。
隐藏命令和重命名命令需要在配置⽂件中配置 f。
隐藏命令
rename-command CONFIG ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN ""
重命名命令
rename-command CONFIG FYConfigdjx
rename-command FLUSHALL FYFlushalldjx
rename-command FLSUHDB FYFlushdbdjx
rename-command SHUTDOWN FYShutdowndjx
安装中遇到的错误
错误1 gcc 编译器没有安装
解决办法:安装gcc 编译器
yum install gcc -y
错误2 jemalloc/jemalloc.h: No such file or directory。(注意,这⾥需要特别注意)
针对这个错误,我们可以在README.md ⽂件中看到解释。
---------
Selecting a non-default memory allocator when building Redis is done by setting
the `MALLOC` environment variable. Redis is compiled and linked against libc
malloc by default, with the exception of jemalloc being the default on Linux
systems. This default was picked because jemalloc has proven to have fewer
fragmentation problems than libc malloc.
To force compiling against libc malloc, use:
% make MALLOC=libc
To compile against jemalloc on Mac OS X systems, use:
% make MALLOC=jemalloc
Verbose build
-------------
⽹上⼤部分解决办法都是错误的,如下⽂:
centos(错误解决办法)
make MALLOC=libc
正确解决办法(针对2.2以上的版本)
make distclean && make
导致出现这个错误的原因
错误的本质是我们在开始执⾏make 时遇到了错误(⼤部分是由于gcc未安装),然后我们安装好了gcc 后,我们再执⾏make ,这时就出现了jemalloc/jemalloc.h: No such file or directory。这是因为上次的
编译失败,有残留的⽂件,我们需要清理下,然后重新编译就可以了。
⽹上的解决办法是有什么错误吗?
⽹上的解决办法虽然最后也是可以成功安装好 redis ,但是是有⼀些隐患的,⾸先我们要知道redis 需要使⽤内存分配器的, make MALLOC=jemalloc 就是指定内存分配器为 jemalloc ,make MALLOC=libc 就是指定内存分配器为 libc ,这个是有安全隐患的,jemalloc 内存分配器在实践中处理内存碎⽚是要⽐libc 好的,⽽且在README.md ⽂档也说明到了,jemalloc内存分配器也是包含在源码包⾥⾯的,可以在deps ⽬录下看到 jemalloc ⽬录。
以上就是我在安装的时候遇到的问题,后续如果还有其他会继续补充。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论