redis 安裝與安裝中遇到的錯誤html
wget http://download.redis.io/releases/redis-4.0.11.tar.gz tar xzf redis-4.0.11.tar.gz cd redis-4.0.11 make
啓動服務端redis
src/redis-server
客戶端鏈接與測試centos
src/redis-cli redis> set foo bar OK redis> get foo "bar"
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
臨時生效ide
在命令行用 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"
永久生效ui
經過在redis的配置文件redis.conf 進行配置,在配置文件中有個參數: requirepass 這個就是配置redis訪問密碼的參數;this
requirepass password
而後咱們啓動的時候須要指定咱們的配置文件進行啓動。 spa
redis-server /etc/redis.conf
默認是6379,咱們能夠更改爲公司內部統一的端口。命令行
port 6379
redis 默認綁定的是 127.0.0.1 ,也就是隻能本地訪問了,若是咱們須要讓外網也能夠進行訪問,那麼咱們須要更改默認的綁定。
bind 0.0.0.0
這樣咱們就可讓應用訪問了。
默認日誌文件的存放位置是爲空的,也就是直接在控制檯輸出了。
咱們能夠在logfile中配置日誌文件路徑。
logfile "/var/log/redis.log"
在redis.conf 的
# 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/
該參數,在3.2版本和4.0版本是默認開啓的,可是在2.4版本中是沒有開啓的,該參數咱們進行使用dump.rdb文件時是有做用的,由於在使用dump.rdb 的時候有該值是會效驗該文件的完整性。rdbchecksum設置爲no的話就不會效驗該文件的完整性。
咱們可使用nohup和& 讓redis在後臺正常運行,並寫入日誌到/var/log/redis.log
nohup ./src/redis-server ./redis.conf >>/var/log/redis.log 2>&1 &
useradd -M -s /sbin/nologin [username]
Redis 無權限分離,其管理員帳號和普通帳號無明顯區分。攻擊者登陸後可執行任意操做,所以須要隱藏如下重要命令:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL
。
咱們能夠隱藏,也能夠將這些命令設置爲複雜的字符。
隱藏命令和重命名命令須要在 配置文件中配置 redis.conf。
隱藏命令
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 目錄。
以上就是我在安裝的時候遇到的問題,後續若是還有其餘會繼續補充。